Software Archive
Read-only legacy content
17061 Discussions

Intel OpenMP 3.0 and TBB Task Scheduler

Ami_Marowka
Beginner
562 Views
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
0 Kudos
1 Reply
robert-reed
Valued Contributor II
562 Views
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.

0 Kudos
Reply