Nanos mercurium: A research compiler for OpenMP

Jairo Balart, Angel J. Duran, M. Gon, Xavier Martorell, Eduard Ayguadé, Jesús Labarta · 2004

OpenMP is still in the process of being defined and extended to broad the range of applications and parallelization strategies it can be used for. The proposal of OpenMP extensions may require the implementation of new features in the runtime system supporting the OpenMP parallel execution and modifications in an existing OpenMP compiler, either at the front end (parsing of new directives and clauses) or back end (code generation targetting a specific runtime system). It may even imply to modify the internals of the compiler to accommodate new concepts, data structures or code manipulation routines. The objective of the Nanos Mercurium compiler is to offer a compilation platform that OpenMP researchers can use to test new language features. It needs to be: 1) robust enough to enable testing with real applications and benchmarks, and 2) easy to add new features into it, hiding as much as possible all its internals. To achieve the first objective, we decided to build Nanos Mercurium on top of an existing compilation platform, the Open64 compiler. In order to achieve the second objective, Nanos Mercurium uses templates of code for specifying the transformations of the OpenMP directives. In order to validate Nanos Mercurium, we show how to implement dynamic sections, a relaxation of the current definition of SECTIONS to allow the parallelization of programs that use iterative structures (such as while loops) or recursion. It is shown as an alternative to the workqueueing execution model proposed by KAI/Intel. 1

Read the paper · More papers on PaperTik