主要内容

广播变量

一个广播变量循环以外的任何变量,变量或一个切片变量,这并不改变在一个循环。在的开始parfor循环,MATLAB®任何广播变量的值发送给所有的工人。在这个例子中,MATLAB发送的值一个B所有的工人。

= 5;B = 10;C = 0;parfori = 1:10如果我= = C = C + B;结束结束

性能考虑

拥有大型广播变量或许多广播变量可能导致重大客户端之间的通信及其相关工人和增加开销。变量,由于广播通信开销大,考虑创建和分配临时变量在循环。相反,由于创建和分配临时变量计算开销大,考虑使用广播变量。

更多细节,请参阅临时变量决定何时使用parfor

请注意

当多个parfor循环需要访问相同的常数的数据集,你可以提高你的代码的性能通过使用parallel.pool.Constant将数据传输到工人开始时只有一次,而不是每一个吗parfor循环。

提高代码的性能,寻找机会减少不必要的广播变量。例如,这些代码包含一个广播变量

M =魔法(10);parfori = 1:元素个数(M) (i) = M (i)。/元素个数(M);结束

这段代码可以重写来评估元素个数(M)之前parfor循环。删除元素个数(M)parfor循环防止MATLAB发送的所有元素每个工人。而MATLAB发送的值N和切变量的一个子集每个工人。

M =魔法(10);N =元素个数(M);parfori = 1: N (i) = M (i) / N;结束

另请参阅

相关的话题