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

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

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.
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.

1 Kommentar

Thank you. This is the command I didn't know about and that solves what I wanted to address.

Melden Sie sich an, um zu kommentieren.

Kategorien

Produkte

Version

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by