MATLAB arrayfun на GPU с циклом parfor - PullRequest
       79

MATLAB arrayfun на GPU с циклом parfor

1 голос
/ 27 октября 2019

Я выполняю тяжелую вычислительную работу, используя arrayfun с графическим процессором в MATLAB.

Мой код выглядит так

N = 2000;
dp = 0.005;
p1 = [0:dp:1];
p2 = [0:dp:1];
pB = [0:dp:2];
[p1,p2,pB] = meshgrid(p1,p2,pB);
p1 = gpuArray(p1);
p2 = gpuArray(p2);
pB = gpuArray(pB);
A = zeros(N,1);
parfor i = 1:N
       A(i) = arrayfun(@MYFUN,p1,p2,pB);
end

Во-первых, я удивлен, что для N=2000,parfor почти занимает то же время, что и обычный цикл for (при использовании parfor кажется, что мой MATLAB подключается к 6 рабочим). Это потому, что у моего ноутбука только 1 графический процессор, поэтому parfor не помогает?

1 Ответ

1 голос
/ 27 октября 2019

parfor не работает на графическом процессоре, скорее он запускает несколько «рабочих» на доступных ядрах вашего компьютера. В общем случае ядра GPU не могут служить рабочими matlabpool / parpool.

Если у вас несколько графических процессоров, вы можете использовать parfor в сочетании с spmd, чтобы запустить его на графическом процессоре. ответ по математике но это в случае, если вы хотите выполнить определенную функцию на графическом процессоре.

...