У меня есть трехмерная сетка, в которой для каждой точки сетки я хочу вычислить зависящую от времени функцию G (t) для большого количества временных шагов, а затем суммировать функцию G для каждой точки сетки.Используя 4 для циклов, время выполнения становится очень большим, поэтому я пытаюсь избежать этого, используя parfor.
часть моего кода:
for i=1:50
for j=1:50
for k=1:25
x_in=i*dx;
y_in=j*dy;
z_in=k*dz;
%dx,dy, dz are some fixed values
r=sqrt((xx-x_in).^2+(yy-y_in).^2+(zz-z_in).^2);
%xx,yy,zz are 50x50x25 matrices generated from meshgrid
% r is a 3d matrix which produced from a 3 for-loop, for all the points of grid
parfor q=1:100
t=0.5*q;
G(q)=((a*p)/(t.^1.5)).*(exp(-r.^2/(4*a*t)));
% a,p are some fixed values
end
GG(i,j,k)=sum(G(:));
end
end
end
Когда я использую parfor
время выполнения становится больше, и я не уверен, почему это происходит.Может быть, я не очень знаком с нарезанными и проиндексированными переменными в цикле parfor.
Мой процессор имеет 8 потоков и оперативную память ddr3 8GB
Любая помощь будет отличной.
Спасибо