Building a Source-to-Source UPC-to-C Translator
Wei-Yu Chen
EECS Department, University of California, Berkeley
Technical Report No. UCB/CSD-04-1369
, 2004
http://www2.eecs.berkeley.edu/Pubs/TechRpts/2004/CSD-04-1369.pdf
Unified Parallel C (UPC) is a parallel language that uses a Single Program Multiple Data (SPMD) model of parallelism within a global address space. The Berkeley UPC Compiler is an open source and high-performance implementation of the language. The choice of C as the code generation target greatly enhances the compiler's portability, as evidenced by its support of a wide range of supercomputing platforms, including large-scale multiprocessors, vector machines, and network of workstations. In this paper I describe the translator component of the Berkeley UPC Compiler, which is responsible for performing UPC-to-C transformation and generating the necessary runtime calls for communication. The goal of the translator is to generate high quality C code while enabling easy porting of the compiler, and also provide a framework that allows for extensive high-level optimizations. We use a combination of micro-benchmarks and application kernels to show that our compiler can output C code that achieves good performance on both superscalar and vector environments, despite the source-to-source transformation process. We also investigate several communication optimizations, specifically targeting two optimizations can get significantly improve the performance of fine-grained programs: message coalescing and split-phase communication generation.
BibTeX citation:
@techreport{Chen:CSD-04-1369, Author= {Chen, Wei-Yu}, Title= {Building a Source-to-Source UPC-to-C Translator}, Year= {2004}, Month= {Dec}, Url= {http://www2.eecs.berkeley.edu/Pubs/TechRpts/2004/6205.html}, Number= {UCB/CSD-04-1369}, Abstract= {Unified Parallel C (UPC) is a parallel language that uses a Single Program Multiple Data (SPMD) model of parallelism within a global address space. The Berkeley UPC Compiler is an open source and high-performance implementation of the language. The choice of C as the code generation target greatly enhances the compiler's portability, as evidenced by its support of a wide range of supercomputing platforms, including large-scale multiprocessors, vector machines, and network of workstations. In this paper I describe the translator component of the Berkeley UPC Compiler, which is responsible for performing UPC-to-C transformation and generating the necessary runtime calls for communication. The goal of the translator is to generate high quality C code while enabling easy porting of the compiler, and also provide a framework that allows for extensive high-level optimizations. We use a combination of micro-benchmarks and application kernels to show that our compiler can output C code that achieves good performance on both superscalar and vector environments, despite the source-to-source transformation process. We also investigate several communication optimizations, specifically targeting two optimizations can get significantly improve the performance of fine-grained programs: message coalescing and split-phase communication generation.}, }
EndNote citation:
%0 Report %A Chen, Wei-Yu %T Building a Source-to-Source UPC-to-C Translator %I EECS Department, University of California, Berkeley %D 2004 %@ UCB/CSD-04-1369 %U http://www2.eecs.berkeley.edu/Pubs/TechRpts/2004/6205.html %F Chen:CSD-04-1369