Parfor performance are too good to be true
1 次查看(过去 30 天)
显示 更早的评论
Code:
function X
z=ones(1000);
tic
parfor j = 1:200
for k = 1:200
z = z+1;
end
end;
toc
zz=ones(1000);
tic
for j = 1:200
for k = 1:200
zz = zz+1;
end
end;
toc
isequal(z,zz)
Output:
Elapsed time is 0.091983 seconds.
Elapsed time is 12.810199 seconds.
ans =
1
I have two questions:
1. I have only 4 cores, how does parfor run more than 100 times faster?
2. Is the code legal? z = z+1 from 4 cores simultaneously can cause unwanted result (two +1 operations in the same time can result only one increment).
Thanks
0 个评论
采纳的回答
Thorsten
2015-11-4
编辑:Thorsten
2015-11-4
1. I guess the code is optimized, such that, e.g., the for loop is replaced by z = z + 200;
2. That's valid, because the computation of z can be done in any order. It's a simplified version of the last example in http://de.mathworks.com/help/distcomp/parfor.html
2 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!