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