Borrar filtros
Borrar filtros

Enable multi-threading on a parfor loop

10 visualizaciones (últimos 30 días)
Alexandre
Alexandre el 8 de Jul. de 2014
Comentada: Gergely Papp el 9 de Oct. de 2014
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

Respuesta aceptada

Edric Ellis
Edric Ellis el 8 de Jul. de 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 comentarios
José-Luis
José-Luis el 8 de Jul. de 2014
Editada: José-Luis el 8 de Jul. de 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
Gergely Papp el 9 de Oct. de 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?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Parallel for-Loops (parfor) en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by