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
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
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.
更多回答(1 个)
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
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 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!