Dear Intel Experts,
I would like to know whether Intel OpenMP 3.0 task scheduler using work-stealing approach for dynamic load-balancing.
Regarding TBB, I would like to know whether the new algorithms, Parallel_invoke and Parallel_foe_each, are using the work-stealing mechanism of TBB like Parallel_for and Parallel_reduce for dynamic load balancing.
Thanks in advance, Ami
I would like to know whether Intel OpenMP 3.0 task scheduler using work-stealing approach for dynamic load-balancing.
Regarding TBB, I would like to know whether the new algorithms, Parallel_invoke and Parallel_foe_each, are using the work-stealing mechanism of TBB like Parallel_for and Parallel_reduce for dynamic load balancing.
Thanks in advance, Ami
链接已复制
1 回复
Quoting - Ami Marowka
I would like to know whether Intel OpenMP 3.0 task scheduler using work-stealing approach for dynamic load-balancing.
Regarding TBB, I would like to know whether the new algorithms, Parallel_invoke and Parallel_foe_each, are using the work-stealing mechanism of TBB like Parallel_for and Parallel_reduce for dynamic load balancing.
Regarding TBB, I would like to know whether the new algorithms, Parallel_invoke and Parallel_foe_each, are using the work-stealing mechanism of TBB like Parallel_for and Parallel_reduce for dynamic load balancing.
There is nothing in the OpenMP 3.0 specification that would require the use of a work-stealing scheduler and there are several defined scheduler kinds that limit how OpenMP can divide work, mostly for parallel loops. I suppose you could write an implementation of schedule(auto) that uses task-stealing:
When schedule(auto) is specified, the decision regarding scheduling is delegated to the compiler and/or runtime system. The programmer gives the implementation the freedom to choose any possible mapping of iterations to threads in the team.
I have not heard anything suggesting that has been done, however.
Regarding parallel_invoke and parallel_for_each, these are both task generators that live on top the TBB task scheduler, which will use task stealing where appropriate to dispatch these tasks.