Prototyping the automatic generation of MPI code from OpenMP programs in GCC
Résumé
Multiprocessor architectures comprising various memory organizations and communication schemes are now widely deployed. Hence, powerful programming tools are expressly needed in order to fully exploit the computation capabilities of such architectures. Classically, a parallel program must strictly conform to a unique parallel paradigm (either shared memory or message passing). However it is clear that this approach is far from being suited to current architectures. The shared-memory paradigm is restricted to certain hardware architectures while the message-passing paradigm makes evolution of the application very painful. In this paper we investigate the use of GCC as a compiler to transform an OpenMP program into a MPI program. OpenMP directives are used to express parallelism in the application and to provide data dependence information to the compiler. We deeply analyze GOMP, the OpenMP implementation in GCC which provides code transformations in the GIMPLE representation, and we compare these transformations to those necessary for transforming a shared-memory program (annotated with OpenMP pragmas) to a message-passing MPI-based program. In order to test some ideas, we have developed a limited prototype. The result of our investigation is that, in addition to the parser and code transformation provided by GOMP, additional data dependency analyses are necessary to generate communications
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...