about parfor and spmd speedup

1 回表示 (過去 30 日間)
Xiaochun
Xiaochun 2011 年 12 月 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?
  1 件のコメント
Walter Roberson
Walter Roberson 2011 年 12 月 30 日
how big are B and C ?

サインインしてコメントする。

採用された回答

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 Center および File ExchangeParallel for-Loops (parfor) についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by