parallel threads stalls until all thread batches are finished.

Ali Çehreli acehreli at yahoo.com
Fri Aug 25 21:31:37 UTC 2023


On 8/25/23 14:27, Joe at bloow.edu wrote:

 > "A work unit is a set of consecutive elements of range to be processed
 > by a worker thread between communication with any other thread. The
 > number of elements processed per work unit is controlled by the
 > workUnitSize parameter. "
 >
 > So the question is how to rebalance these work units?

Ok, your question brings me back from summer hibernation. :)

This is what I do:

- Sort the tasks in decreasing time order; the ones that will take the 
most time should go first.

- Use a work unit size of 1.

The longest running task will start first. You can't get better than 
that. When I print some progress reporting, I see that most of the time 
N-1 tasks have finished and we are waiting for that one longest running 
task.

Ali
"back to sleep"


More information about the Digitalmars-d-learn mailing list