广播变量
一个广播变量循环以外的任何变量,变量或一个切片变量,这并不改变在一个循环。在的开始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;结束