How can I know which worker performs each iteration of the parfor loop?

11 Ansichten (letzte 30 Tage)
I want to know if it is possible to determine which worker performs each iteration of the parfor loop or if it is possible to assign each iteration to a worker.
  2 Kommentare
Thomas Ibbotson
Thomas Ibbotson am 2 Mai 2024
We would usually advise against this, so it would be good to know why you want to do this. I will answer your question in detail below.
Policarpo Abascal
Policarpo Abascal am 6 Mai 2024
Thank you. I have found the answer to my question in the suggestions you provided with 'getcurrentworker'.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Thomas Ibbotson
Thomas Ibbotson am 2 Mai 2024
You can find out which worker is running your code using the following function: https://uk.mathworks.com/help/parallel-computing/getcurrentworker.html
You can achieve more control over how iterations are divided amongst worker using parforOptions: https://uk.mathworks.com/help/parallel-computing/parforoptions.html

Edric Ellis
Edric Ellis am 2 Mai 2024
Bearbeitet: Edric Ellis am 2 Mai 2024
You can use getCurrentTask (if you're using a process pool rather than a thread pool). This has a field ID which tells you which task is operating, like this:
parfor i = 1:N
t = getCurrentTask();
fprintf('Iteration %d on task %d\n', i, t.ID);
end
It's not possible with parfor to assign iterations to workers. You can have more control with spmd - but we'd need to know more about what it is you're trying to achieve.

Kategorien

Mehr zu Parallel for-Loops (parfor) finden Sie in Help Center und File Exchange

Produkte


Version

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by