How can I know which worker performs each iteration of the parfor loop?
    12 views (last 30 days)
  
       Show older comments
    
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 Comments
  Thomas Ibbotson
    
 on 2 May 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.
Answers (2)
  Thomas Ibbotson
    
 on 2 May 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
0 Comments
  Edric Ellis
    
      
 on 2 May 2024
        
      Edited: Edric Ellis
    
      
 on 2 May 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.
See Also
Categories
				Find more on Parallel for-Loops (parfor) in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

