Arranged By Zhonglihao @ 2018
**请确认Matlab安装时点选了并行计算工具箱
确定parfor中的循环代码片计算是独立的
Code #3-1
1.clear A
2.for i = 1:8
3.A(i) = i;
4.end
5.A
6.
7.% 改写成parfor并行
8.clear A
9.parfor i = 1:8
10.A(i) = i;
11.end
12.A
如代码片#3-1及其结果所示,为一个简单的并行赋值功能,A数组所存储的结果只与索引i的值有关,因此此段改写是合法的。
再看一个例子
Code #3-2
1.clear A
2.d = 0; i = 0;
3.for i = 1:4
4.d = i*2;
5.A(i) = d;
6.end
7.disp('代码2:for-loop');
8.A
9.d
10.i
11.
12.clear A
13.d = 0; i = 0;
14.parfor i = 1:4
15.d = i*2;
16.A(i) = d;
17.end
18.disp('代码2:parfor-loop');
19.A
20.d
21.i
上述代码#3-2中希望打印输出观察d和索引i,然而在并行计算中2个值都为0,是因为d和i均为暂存变量被并行处理,因此在处理到终点时d在处理器中的值可以为2,4,6,8,i为1,2,3,4同时存在,因此Matlab无法输出一个确切的值。