フィルターのクリア

Enable multi-threading on a parfor loop

10 ビュー (過去 30 日間)
Alexandre
Alexandre 2014 年 7 月 8 日
コメント済み: Gergely Papp 2014 年 10 月 9 日
Hi everyone,
I have a read a lot of stuff on multi-threading on Matlab but i am a bit lost between all the versions/revisions on this topic. I have a code that mostly runs a parfor loop. This sends to my workers work to do, in single-threaded mode as i can see on my task manager. My question is : despite the overlapping issues that may arise, is there a way in Matlab 2012b and higher to force the multi-thread mode on this parfor loop ?
Thanks in advance,
Alex

採用された回答

Edric Ellis
Edric Ellis 2014 年 7 月 8 日
You can use the maxNumCompThreads function (from within an SPMD block for example) to control the number of threads used by the workers. (Yes, this function is deprecated, but unfortunately there is currently no alternative).
  5 件のコメント
José-Luis
José-Luis 2014 年 7 月 8 日
編集済み: José-Luis 2014 年 7 月 8 日
In a perfect world maybe. But the chances that fetching/computing from different threads will perfectly mesh are very small. In fact, in some cases hyperthreading can make performance worse. And Matlab doesn't really allow you to do the fine tuning necessary to affect this performance.
Gergely Papp
Gergely Papp 2014 年 10 月 9 日
I am not sure it works as it should or maybe I am misinterpreting something. I want to perform a large number of LU factorizations on big sparse matrices. I have access to 16 thread machines (Xeon E5-2670) with 64GB RAM / machine. If I use simple parfor with 16 workers it uses 16x100% cpu power but I run out of memory due to the matrix sizes. If I use 4 or 8 workers I am not utilizing my whole computer's CPU power. So the idea is to use M threads on each of the N workers where NxM=16.
If I set the number of workers to 1 and the number of threads to 4, I can see one matlab process using 400% CPU and doing the job on 4 threads. However, if I now use 4 workers and 4 threads, only 4x100%. 4 workers, 16 threads, still 4x100%. As if doing parfor would stop the LU factorization to run on 4 threads.
Any idea how to resolve the issue, so that I can use 4 workers, each of which is using 4 threads to do the LU factorization?

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

その他の回答 (0 件)

カテゴリ

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