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
December 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},
    Institution = {EECS Department, University of California, Berkeley},
    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