Преобразование всех переменных в gpuArrays не ускоряет вычисления - PullRequest
0 голосов
/ 08 октября 2018

Я пишу симуляцию с MATLAB, где я использовал ускорение CUDA.

Предположим, у нас есть вектор x и y, матрица A и скалярные переменные dt, dx, a, b, c.

Я обнаружил, что, помещая x, y, A в gpuArray() до запуска итерации и встроенных функций,итерация может быть значительно ускорена.

Однако, когда я попытался поместить переменные типа dt, dx, a, b, c в gpuArray(), программазначительно замедлиться более чем на 30%.(Время увеличилось с 7 до 11 секунд).

Почему не стоит помещать все переменные в gpuArray()?

(Краткий комментарий, эти скаляры были умножены вместе с x, y, A и никогда не использовались во время одной итерации.)

1 Ответ

0 голосов
/ 08 октября 2018

Аппаратное обеспечение GPU оптимизировано для работы с относительно большими объемами данных.Вы на самом деле видите преимущество вычислений на GPU только тогда, когда можете загружать множество ядер обработки большим количеством данных, чтобы они были заняты.Как правило, это означает, что вам нужны операции, работающие с тысячами или миллионами элементов.

Затраты на запуск операций на GPU сокращают время вычислений при работе со скалярными величинами, поэтому неудивительно, что они медленнеечем на процессоре.(Это не свойственно MATLAB & gpuArray).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...