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