Team Runtime

Overall Objectives
Scientific Foundations
Application Domains
New Results
Contracts and Grants with Industry
Other Grants and Activities

Section: Software


Participants : Olivier Aumage, François Broquedis, Ludovic Courtès, Pierre-André Wacrenier.

ForestGOMP is an OpenMP environment based on both the GNU OpenMP run-time(GNU OpenMP (GOMP) is distributed as part of the GNU Compiler Collection (GCC). See for more information.) support and the Marcel thread library (described in Section  5.4 ). It is designed to schedule efficiently nested sets of threads (derived from nested parallel regions) over hierarchical architectures. Indeed, approaching the theoretical performance of hierarchical multicore machines requires a very careful distribution of threads and data over the underlying architecture so as to minimize cache misses and NUMA penalties.

Language extensions such as OpenMP provide opportunities to improve thread scheduling over hierarchical architectures in a portable way. High-level parallel constructs such as OpenMP 's provide useful hints about a program's parallel structure. These hints can be leveraged by the underlying scheduler and run-time system to improve thread scheduling, e.g., by taking into account cache affinity among threads, or affinity between threads and data.

The ForestGOMP runtime generates nested Marcel bubbles each time an OpenMP parallel region is encountered, thereby grouping threads sharing common data. Topology-aware scheduling policies implemented by BubbleSched can then be used. Such policies dynamically map bubbles onto the various levels of the underlying hierarchical architecture. ForestGOMP allowed us to validate the BubbleSched approach with highly irregular, fine grain, divide-and-conquer parallel applications. This approach has proved to yield noticeably better performance for a variety of parallel applications.

The experiments we conducted validate this approach in terms of ease of development for the programmer, flexibility, portability and performance. It is a way for experts to build and combine complex scheduling strategies that take characteristics of the application into account. Application programmers get a greater control on scheduling of their OpenMP programs while completely avoiding intrusive and non-portable changes to their applications.

François Broquedis and Ludovic Courtès are the maintainers to this piece of software. It is freely available under the terms of the GNU General Public License version 2 at the following URL:


Logo Inria