Распараллеливание цикла for для одновременной работы на нескольких ядрах графического процессора? - PullRequest
4 голосов
/ 29 марта 2011

Я понимаю, что вы можете использовать matlabpool и parfor для параллельного выполнения итераций цикла for, однако я хочу попробовать воспользоваться преимуществом использования большого количества ядер в моем GPU для запуска большего количество одновременных итераций. Мне было интересно, есть ли встроенный функционал для этого?

Насколько я понимаю, метод, в котором MATLAB запускает код на графическом процессоре, - это GPUarray, но, похоже, он не распараллеливает цикл, только определенные функции внутри цикла.

Для цикла, который я запускаю, каждая итерация может выполняться независимо, и единственными переменными, которые должны существовать вне цикла, являются обрабатываемые данные (трехмерный массив, где первый индекс - время, и каждый итерация работает в разное время) и двумерный выходной массив, где каждая итерация сохраняет результат в течение определенного времени. Каждый раз независим.

Спасибо

1 Ответ

1 голос
/ 29 марта 2011

С GPUArray вы можете выполнять поэлементные операции параллельно, структурируя свой алгоритм в терминах MATLAB arrayfun.По сути, это неявно зацикливается на каждом элементе ваших массивов и может применять тело функции MATLAB к каждому элементу.Документ: здесь .

Есть простая демонстрация: здесь .

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