NERSCPowering Scientific Discovery Since 1974

M08: Intro to PGAS (UPC and CAF) and Hybrid for Multicore Programming

Monday, Nov. 14

Alice Koniges - NERSC / Lawrence Berkeley National Laboratory

Katherine Yelick - NERSC / Lawrence Berkeley National Laboratory

Rolf Rabenseifner - High Performance Computing Center Stuttgart

Reinhold Bader - Leibniz Supercomputing Centre

David Eder - Lawrence Livermore National Laboratory


PGAS (Partitioned Global Address Space) languages offer both an alternative to traditional parallelization approaches (MPI and OpenMP), and the possibility of being combined with MPI for a multicore hybrid programming model. In this tutorial we cover PGAS concepts and two commonly used PGAS languages, Coarray Fortran (CAF, as specified in the Fortran standard) and the extension to the C standard, Unified Parallel C (UPC). Hands-on exercises to illustrate important concepts are interspersed with the lectures. Attendees will be paired in groups of two to accommodate attendees without laptops. Basic PGAS features, syntax for data distribution, intrinsic functions and synchronization primitives are discussed. Additional topics include parallel programming patterns, future extensions of both CAF and UPC, and hybrid programming. In the hybrid programming section we show how to combine PGAS languages with MPI, and contrast this approach to combining OpenMP with MPI. Real applications using hybrid models are given.

Details: (This link will contain most of the information from this document.)