Я выполняю тяжелую вычислительную работу, используя 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
не помогает?