|
OpenUH: An Optimizing, Portable OpenMP Compiler
Chunhua Liao1, Oscar Hernandez1, Barbara Chapman1, Wenguang Chen2
and Weimin Zheng2
OpenMP has gained wide popularity as an API for parallel programming on shared memory systems and distributed shared memory platforms. Its success relies on the ease with which it can be used, its support for incremental parallelism, and its broad availability: it has been implemented in many commercial and research compilers. Nevertheless, there remains a need for a portable, robust , open-source, optimizing OpenMP compiler for C/C++/Fortran 90, especially for teaching and research into the API and its use. For example, among the many interesting topics for exploration at language and compiler levels is the expansion of the set of target architectures to include recent system configurations, such as SMPs based on Chip Multithreading processors, as well as clusters of SMPs. In this paper, we present our efforts to design and implement such an OpenMP compiler on top of Open64, an open source compiler framework, by reusing its existing analysis and optimization framework and adopting a source-to-source translator approach where a native back end is not available. The compilation strategy we have adopted and the corresponding runtime support are described. The compilerŐs behavior is analyzed and the impact of various inter- and intra- procedural optimizations on OpenMP performance are explored using benchmark tests from the EPCC microbenchmarks, NAS parallel benchmark and SPECOMP 2001. Results of using the OpenMP validation suite to ascertain the correctness of the compiler will also be presented. Finally, based on our experience, we will discuss several design and implementation issues related to scalability on large scale systems.
Please contact our webadmin with any comments or changes.
|