A ROSE-Based OpenMP 3.0 Research Compiler Supporting Multiple Runtime Libraries

A ROSE-Based OpenMP 3.0 Research Compiler Supporting Multiple Runtime Libraries
复制标题

支持多个运行时库的基于 ROSE 的 OpenMP 3.0 研究编译器

DOI:
--
复制
发表时间:
2010
期刊:
International Workshop on OpenMP
影响因子:
--
通讯作者:
B. Supinski
B. Supinski
中科院分区:
--
文献类型:
--
作者:
C. Liao;D. Quinlan;T. Panas;B. Supinski

文献摘要

被引文献

相似文献

OpenMP是一种流行且不断发展的共享内存平台编程模型。它依靠编译器来瞄准现代硬件体系结构以实现最佳性能。各种可扩展和强大的研究编译器是OpenMP未来可持续成功的关键。在本文中,我们介绍了使用ROSE源代码到源代码编译器框架为C、C++和Fortran构建OpenMP 3.0研究型编译器所做的努力。我们的目标是为自己和他人的OpenMP研究提供支持。我们已经扩展了ROSE的内部表示来处理所有的OpenMP 3.0构造,从而方便了对它们的实验。由于OpenMP的研究往往由于编译器翻译和运行时系统的紧密耦合而变得复杂,我们提出了一套规则来定义多个运行时库之上的公共OpenMP运行时库(XOMP)。这些规则还定义了如何构建一组针对XOMP的翻译。我们的工作演示了如何在不同的运行时库中重用OpenMP翻译。这项工作通过分离编译器翻译和运行时库之间的有问题的依赖来简化OpenMP研究。通过演示OpenMP分析工具的正确性,我们对我们的工作进行了评估。我们还展示了如何使用GOMP和OMNI来定义XOMP。我们与其他OpenMP编译器的性能比较结果表明,我们灵活的运行时支持不会产生额外的开销。
OpenMP is a popular and evolving programming model for shared-memory platforms. It relies on compilers to target modern hardware architectures for optimal performance. A variety of extensible and robust research compilers are key to OpenMP’s sustainable success in the future. In this paper, we present our efforts to build an OpenMP 3.0 research compiler for C, C++, and Fortran using the ROSE source-to-source compiler framework. Our goal is to support OpenMP research for ourselves and others. We have extended ROSE’s internal representation to handle all OpenMP 3.0 constructs, thus facilitating experimenting with them. Since OpenMP research is often complicated by the tight coupling of the compiler translation and the runtime system, we present a set of rules to define a common OpenMP runtime library (XOMP) on top of multiple runtime libraries. These rules additionally define how to build a set of translations targeting XOMP. Our work demonstrates how to reuse OpenMP translations across different runtime libraries. This work simplifies OpenMP research by decoupling the problematic dependence between the compiler translations and the runtime libraries. We present an evaluation of our work by demonstrating an analysis tool for OpenMP correctness. We also show how XOMP can be defined using both GOMP and Omni. Our comparative performance results against other OpenMP compilers demonstrate that our flexible runtime support does not incur additional overhead.