Task-Based Execution of Nested OpenMP Loops
In this work we propose a novel technique to reduce the overheads related to nested parallel loops in OpenMP programs. In particular we show that in many cases it is possible to replace the code of a nested parallel-for loop with equivalent code that creates tasks instead of threads, thereby limiting parallelism levels while allowing more opportunities for runtime load balancing. In addition we present the details of an implementation of this technique that is able to perform the whole procedure completely transparently. We have experimented extensively to determine the effectiveness of our methods. The results show the actual performance gains we obtain (up to 25% in a particular application) as compared to other OpenMP implementations that are forced to suffer nested parallelism overheads.
KeywordsOpenMP nested parallelism runtime system tasks worksharing constructs
Unable to display preview. Download preview PDF.
- 3.Bull, J.M.: Measuring Synchronisation and Scheduling Overheads in OpenMP. In: Proc. of 1st European Workshop on OpenMP, EWOMP, pp. 99–105. Lund, Sweden (September 1999)Google Scholar
- 4.Dimakopoulos, V.V., Leontiadis, E., Tzoumas, G.: A portable C compiler for OpenMP V.2.0. In: Proc. of 5th European Workshop on OpenMP, EWOMP 2003, Aachen, Germany, pp. 5–11 (September 2003)Google Scholar
- 8.OpenMP ARB: OpenMP Application Program Interface V3.0 (May 2008)Google Scholar
- 9.OpenMP ARB: OpenMP Application Program Interface V3.1 (July 2011)Google Scholar
- 10.Reinders, J.: Intel threading building blocks, 1st edn. O’Reilly & Associates, Inc., Sebastopol (2007)Google Scholar