最近为了提高matlab运算速度,查阅了matlab多核运算的一些相关资料,即函数parfor。这中间遇到了一些问题,现在简单记录一下,将来有机会可以整理在一起。
参考资料先直接贴网址,方便自己查阅。
1. parfor适用情况,变量介绍。 http://zhiqiang.org/coding/matlab-parfor-condition.html
- Loop 变量,顾名思义无需多解释。一个限制是循环内不能对循环变量再次赋值
- Sliced 变量,是指每个循环只访问该变量的特定位置,具体访问位置跟 Loop 变量有关。一个比较简单的理解方式是,循环访问变量的位置必须是「固定」「不重合」的。如果该变量是输出变量(即在循环内被赋值),访问还必须是「连续」的(此时只能是 Loop 变量再加固定的平移量)。该变量不能在循环内动态变换大小。因此有以下的可行以及不可行的情况
- Broadcast 变量,是指外部变量,且在循环内未被重新赋值。
- Reduction 变量,该变量遍历所有循环,并且跟运行结果无关。Matlab 会自动识别该类变量,并正确输出结果。
- temporary 变量,是指循环