Why parfor loop so efficient?

1 次查看(过去 30 天)
Hi I tested two script in the following
%1. Parall_try
parfor i = 1:2000
for j = 1:10000
b(i,j) = i*j+i/j;
end
end
and
%2. Serial_try
for i = 1:2000
for j = 1:10000
a(i,j) = i*j+i/j;
end
end
I set two workers totally. The profile report shows 32s for running serial_try, and about 2s for parallel_try. I noticed the parallel running does not output any i/j index to workspace, which may explain the speed up of parallel running. Is this really true? It motivates me to find a more efficient way to run my script. In script, it output every variable to workspace, which can be very time-consuming. Can I calculate them without output them to workspace? It may sounds absurd because I have not figured out why parfor loop can be that efficient.
  2 个评论
jgg
jgg 2016-5-30
Do you pre-allocate those arrays? That could be the difference.
C.Hu
C.Hu 2016-5-30
No, I clear the workspace everytime before running the script.

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2016-5-30
parfor effectively pre-allocates the arrays before use whereas your non-parfor solution does not. That makes a big difference in efficiency.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by