• DocumentCode
    1783368
  • Title

    UPC++: A PGAS Extension for C++

  • Author

    Yili Zheng ; Kamil, Amir ; Driscoll, Michael B. ; Hongzhang Shan ; Yelick, Katherine

  • Author_Institution
    Lawrence Berkeley Nat. Lab., Berkeley, CA, USA
  • fYear
    2014
  • fDate
    19-23 May 2014
  • Firstpage
    1105
  • Lastpage
    1114
  • Abstract
    Partitioned Global Address Space (PGAS) languages are convenient for expressing algorithms with large, random-access data, and they have proven to provide high performance and scalability through lightweight one-sided communication and locality control. While very convenient for moving data around the system, PGAS languages have taken different views on the model of computation, with the static Single Program Multiple Data (SPMD) model providing the best scalability. In this paper we present UPC++, a PGAS extension for C++ that has three main objectives: 1) to provide an object-oriented PGAS programming model in the context of the popular C++ language, 2) to add useful parallel programming idioms unavailable in UPC, such as asynchronous remote function invocation and multidimensional arrays, to support complex scientific applications, 3) to offer an easy on-ramp to PGAS programming through interoperability with other existing parallel programming systems (e.g., MPI, OpenMP, CUDA). We implement UPC++ with a "compiler-free" approach using C++ templates and runtime libraries. We borrow heavily from previous PGAS languages and describe the design decisions that led to this particular set of language features, providing significantly more expressiveness than UPC with very similar performance characteristics. We evaluate the programmability and performance of UPC++ using five benchmarks on two representative supercomputers, demonstrating that UPC++ can deliver excellent performance at large scale up to 32K cores while offering PGAS productivity features to C++ applications.
  • Keywords
    C++ language; data models; object-oriented programming; parallel programming; C++ language; C++ templates; PGAS language extension; SPMD model; UPC++; asynchronous remote function invocation; compiler-free approach; complex scientific applications; large random-access data; lightweight one-sided communication; locality control; multidimensional arrays; object-oriented PGAS programming model; parallel programming systems; partitioned global address space languages; representative supercomputers; runtime libraries; static single program multiple data model; Arrays; Electronics packaging; Instruction sets; Libraries; Programming; Syntactics; Titanium; PGAS; Parallel Computing; Parallel Programming; Programming System;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Parallel and Distributed Processing Symposium, 2014 IEEE 28th International
  • Conference_Location
    Phoenix, AZ
  • ISSN
    1530-2075
  • Print_ISBN
    978-1-4799-3799-8
  • Type

    conf

  • DOI
    10.1109/IPDPS.2014.115
  • Filename
    6877339