Enable multi-threading on a parfor loop
20 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
0 commentaires
Réponse acceptée
Edric Ellis
le 8 Juil 2014
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 commentaires
José-Luis
le 8 Juil 2014
Modifié(e) : José-Luis
le 8 Juil 2014
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
le 9 Oct 2014
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?
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Parallel Computing Fundamentals 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!