小编geo*_*rge的帖子

matlab parfor导致比for循环更大的执行时间

我有一个3维网格,其中对于网格的每个点,我想计算大量时间步长的时间相关函数G(t),然后对每个网格点求G函数.使用4 for循环,执行时间变得非常大,所以我试图使用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
Run Code Online (Sandbox Code Playgroud)

当我使用时parfor,执行时间变得更大,我不确定为什么会这样.也许我对parfor循环中的切片和索引变量不太熟悉.

我的电脑处理器有8个线程和ram内存ddr3 8GB

任何帮助都会很棒.

谢谢

matlab for-loop

3
推荐指数
1
解决办法
611
查看次数

标签 统计

for-loop ×1

matlab ×1