[ Matlab ] --- 并行运算 循环语句parfor的注意点(修改中)

parfor循环语句能大大加速计算,但是parfor存在4种必须注意的点:


1, 循环步长必须整数;

即 不能是 parfor i = 1 : 0.2 : 10 这种

----------------------------------

2,parfor不能嵌套

即,不能是 

parfor xxx

           parfor xxx

                       yyyyyyy ;

            end

end

---------------------------------

3,修改中,存在问题

------------------------------------

4,计算时,不能进行迭代

比如:

parfor k = 2:10

            x(k) = x(k-1) + k; 

end

这种存在先后顺序的计算 是不允许的


=====================



这里说一下第3点,这点是最重要的,因为经常需要用循环计数的人会出问题,比如:


mm = 0 ; % 初始化

for n = 1 : 100

        mm = mm+1 ;

        xxxxxxx ;

end


当如果修改成

mm = 0 ; % 初始化

parfor n = 1 : 100

        mm = mm+1 ;

        xxxxxxx ;

end

当数循环数不大的时候,并且计算式简单的时候,实际上也能计算,并且不报错。但是当parfor循环很复杂的时候,matlab就会报错,因为第3点告诉我们,应该修改mm的表达式。比如改成mm = n;尽量不要用到pafor循环之外的变量。





参考:

https://cn.mathworks.com/help/distcomp/convert-for-loops-into-parfor-loops.html

https://cn.mathworks.com/help/distcomp/ensure-that-parfor-loop-iterations-are-independent.html


 
评论
热度(3)
 
回到顶部