UPC plus plus : A PGAS Extension for C plus

被引:96
作者
Zheng, Yili [1 ]
Kamil, Amir [1 ]
Driscoll, Michael B. [1 ]
Shan, Hongzhang [1 ]
Yelick, Katherine [1 ]
机构
[1] Lawrence Berkeley Natl Lab, Berkeley, CA 94720 USA
来源
2014 IEEE 28TH INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM | 2014年
关键词
D O I
10.1109/IPDPS.2014.115
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
Partitioned Global Address Space (PGAS) languages are convenient for expressing algorithms with large, randomaccess 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.
引用
收藏
页数:10
相关论文
共 20 条
[1]  
[Anonymous], 2005, LBNL59208
[2]   Shared memory programming for large scale machines [J].
Barton, Christopher ;
Cascaval, Calin ;
Almasi, George ;
Zheng, Yili ;
Farreras, Montse ;
Chatterjee, Siddhartha ;
Amaral, Jose Nelson .
ACM SIGPLAN NOTICES, 2006, 41 (06) :108-117
[3]  
Bikshandi G., 2006, Proceedings of the 2006 ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming PPoPP'06, P48, DOI 10.1145/1122971.1122981
[4]   Parallel programmability and the Chapel language [J].
Chamberlain, B. L. ;
Callahan, D. ;
Zima, H. P. .
INTERNATIONAL JOURNAL OF HIGH PERFORMANCE COMPUTING APPLICATIONS, 2007, 21 (03) :291-312
[5]   ZPL: A machine independent programming language for parallel computers [J].
Chamberlain, BL ;
Choi, SE ;
Lewis, EC ;
Lin, C ;
Snyder, L ;
Weathersby, WD .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2000, 26 (03) :197-211
[6]  
Charles P., 2005, OOPSLA 05
[7]  
Eleftheriou M., 2002, IPDPS 02
[8]   SAMPLESORT - A SAMPLING APPROACH TO MINIMAL STORAGE TREE SORTING [J].
FRAZER, WD ;
MCKELLAR, AC .
JOURNAL OF THE ACM, 1970, 17 (03) :496-&
[9]   The implementation of the Cilk-5 multithreaded language [J].
Frigo, M ;
Leiserson, CE ;
Randall, KH .
ACM SIGPLAN NOTICES, 1998, 33 (05) :212-223
[10]  
Garland M., 2012, SC 12