parallel threads stalls until all thread batches are finished.
Joe at bloow.edu
Joe at bloow.edu
Sat Aug 26 03:39:28 UTC 2023
On Friday, 25 August 2023 at 21:31:37 UTC, Ali Çehreli wrote:
> 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"
I do not know the amount of time they will run. They are files
that are being downloaded and I neither know the file size nor
the download rate(in fact, the actual download happens
externally).
While I could use work unit of size 1 then problem then is I
would be downloading N files at once and that will cause other
problems if N is large(and sometimes it is).
There should be a "work unit size" and a "max simultaneous
workers". Then I could set the work unit size to 1 and say the
max simultaneous workers to 8 to get 8 simultaneous downloads
without stalling.
More information about the Digitalmars-d-learn
mailing list