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

조회 수: 9 (최근 30일)
Policarpo Abascal
Policarpo Abascal 2024년 5월 2일
댓글: Policarpo Abascal 2024년 5월 6일
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
Thomas Ibbotson
Thomas Ibbotson 2024년 5월 2일
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 2024년 5월 6일
Thank you. I have found the answer to my question in the suggestions you provided with 'getcurrentworker'.

댓글을 달려면 로그인하십시오.

답변 (2개)

Thomas Ibbotson
Thomas Ibbotson 2024년 5월 2일
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 2024년 5월 2일
편집: Edric Ellis 2024년 5월 2일
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
Policarpo Abascal
Policarpo Abascal 2024년 5월 6일
Thank you. This is the command I didn't know about and that solves what I wanted to address.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Parallel for-Loops (parfor)에 대해 자세히 알아보기

제품


릴리스

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by