Intel OpenMP 3.0 and TBB Task Scheduler

Intel OpenMP 3.0 and TBB Task Scheduler

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

2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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.

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.

Leave a Comment

Please sign in to add a comment. Not a member? Join today