Why parfor loop so efficient?

1 vue (au cours des 30 derniers jours)
C.Hu
C.Hu le 30 Mai 2016
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 commentaires
jgg
jgg le 30 Mai 2016
Do you pre-allocate those arrays? That could be the difference.
C.Hu
C.Hu le 30 Mai 2016
No, I clear the workspace everytime before running the script.

Connectez-vous pour commenter.

Réponse acceptée

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

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by