parfor —— matlab 下的并行循环

parfor:parallel for 循环

我们知道,matlab 更适合的处理对象是矩阵,而不是大规模的循环运算。当有时不得不使用 for 循环时,如果提高 for 循环的执行效率呢。这就是 parfor 的用武之地了,既然是并行运算,就是一次可以执行多次 iterations 处理(类似于操作系统的多线程作业),以加快循环的速度。与传统 for 循环最大的不同在于,parfor 执行迭代时并不按照一个确定的顺序(因此,需要求不同的迭代之间,彼此独立,不存在 A(i) = A(i-1)/A(i+1) 的情况,)。

parfor loopvar = initval:endval,
    statements; 
end

% 使用 M(正整数) 表示最大的线程和作业数
parfor (loopvar = initval:endval, M);
    statements; 
end

举例如下:

parfor i=1:3,
    c(:,i) = eig(rand(1000)); 
end

这里 i 进入的顺序就未必是 1,2,3:

parfor i=1:3,
    disp(i)
    c(:,i) = eig(rand(1000)); 
end