- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello, all
I am wondering how intel compilers model OpenMP 3.0 (3.1) tasking. According to the standard, private task pools are initiated for the execution of descendant (child) tasks. A global task pool is established and shared by all threads. The question is how the execution order is built for those task pool. Is it LIFO ? or FIFO ? or a cutoff strategy ? I searched everywhere but have not found a clue for this. This matter is actually important when a developer want to guide out-of-order task scheduling in a specific way.
Thank you
Kyungjoo
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I mean the default scheduling option for the following pragmas
#pragma omp task, #pragma omp taskwait.
When a task is suspended by "taskwait", nested paralelism is scheduled in BFS as taskwait enforce it (child tasks are sent to local pool as tasks are tied to the executing thread by default). Question is when tasks are generated without synchronization
for (auto i=list.begin();i!=list.end();++it) {
#pragma omp task
do_something();
}
#pragma ompt taskwait
In this case, tasks can be executed immediately or deffered. When task execution is deffered, how are they scheduled ? If LIFO is used, it possibly reuse the recent memory (or cache). FIFO has no such chance. Thus, my guess is LIFO is a kind of default in the workqueue model. However, I have a chance to know internal implementation.
Thankyou.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Actually I do some recursion inside such kind of loop (so I can fake task scheduling as I wish, but I should know at least how the workqueue is modeled. Any runtime command that I can tweak ?

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page