about parfor and spmd speedup

1 次查看(过去 30 天)
hi,
I have tested the speedup of parfor and spmd as
1)for
tic
for n=1:1000
A=B*C;
end
toc;
2)parfor spmd in one worker in the same pc:
// I have stored B C in the worker before computing
tic
parfor n=1:1000
A=B*C;
end
toc;
I find that the speed of parfor and spmd is only 2/3 of single matlab. is it possible to make it faster?

采纳的回答

Walter Roberson
Walter Roberson 2011-12-30
If your matrices are not very big, then the time required to set up workers and communicate data in to them can overwhelm any saving of using multiple workers.
  3 个评论
Walter Roberson
Walter Roberson 2011-12-30
With a matrix that big, your "for" matrix multiplication would be farmed out to the highly optimized and multithreaded BLAS or LAPACK, using multiple cores or hyperthreading.
I gather that each "parfor" or "smpd" worker requires a new process, and my understanding is that those would only have access to the core or hyperthread they are allocated to.
Xiaochun
Xiaochun 2012-1-2
I see. Thank you very much.

请先登录,再进行评论。

更多回答(1 个)

Knut
Knut 2012-1-3
So the spot where parfor can really shine is loops that are : a)Simple enough that parfor can do them in parallell b)complex/non-general enough that MATLAB does not have a low-level library that does it in paralell anyways
?
  1 个评论
Titus Edelhofer
Titus Edelhofer 2012-1-3
As a rule of thumb: yes. Another way to formulate b): when you have e.g. a quad core (with hyperthreading), i.e., your task manager shows you 8 CPU usages, and your (loop) code runs at exactly 12.5% average CPU usage ...

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by