Tutorial: Productive Parallel Programming with PGAS

Collocated with PACT 2008

Abstract



Partitioned Global Address Space (PGAS) programming languages offer an attractive, high-productivity programming model for parallel programming. PGAS languages, such as Unified Parallel C (UPC), combine the simplicity of shared-memory programming with the efficiency of the message-passing paradigm. The efficiency is obtained through a combination of factors: programmers declare how the data is partitioned and distributed between threads and use the SPMD programming model to define work; compilers can use the data annotations to optimize accesses and communication. We have demonstrated that UPC applications can outperform MPI applications on large-scale machines, such as BlueGene/L.

In this tutorial we shall present our work on the IBM's XLUPC Compiler. We will discuss language issues, compiler optimizations for PGAS languages, runtime trade-offs for scalability and performance results obtained on a number of benchmarks and applications. Attendants should not only gain a better understanding of parallel programming, but also learn about compiler and system limitations. The expected outcome is that programmers will be able to code their applications such that performance optimization opportunities are exposed and exploited.

Presenters



George Almasi
Kit Barton
Calin Cascaval
Ettore Tiotto

Slides