Exploring Traditional and Emerging Parallel Programming Models Using a Proxy Application

Parallel machines are becoming more complex with increasing core counts and more heterogeneous architectures. However, the commonly used parallel programming models, C/C++ with MPI and/or OpenMP, make it difficult to write source code that is easily tuned for many targets. Newer language approaches attempt to ease this burden by providing optimization features such as automatic load balancing, overlap of computation and communication, message-driven execution, and implicit data layout optimizations. In this paper, we compare several implementations of LULESH, a proxy application for shock hydrodynamics, to determine strengths and weaknesses of different programming models for parallel computation. We focus on four traditional (OpenMP, MPI, MPI+OpenMP, CUDA) and four emerging (Chapel, Charm++, Liszt, Loci) programming models. In evaluating these models, we focus on programmer productivity, performance and ease of applying optimizations.

[1]  Eric Darve,et al.  Liszt: A domain specific language for building portable mesh-based PDE solvers , 2011, 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC).

[2]  Helgi Adalsteinsson,et al.  Using simulation to design extremescale applications and architectures: programming model exploration , 2011, PERV.

[3]  Mats Brorsson,et al.  A Comparison of some recent Task-based Parallel Programming Models , 2010 .

[4]  Michael Haupt,et al.  A comparison of context-oriented programming languages , 2009, COP@ECOOP.

[5]  Jack Dongarra,et al.  Numerical linear algebra on emerging architectures: The PLASMA and MAGMA projects , 2009 .

[6]  Avi Mendelson,et al.  Programming model for a heterogeneous x86 platform , 2009, PLDI '09.

[7]  Yang Zhang,et al.  Concurrent Composition Using Loci , 2009, Computing in Science & Engineering.

[8]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..

[9]  Jarek Nieplocha,et al.  Advances, Applications and Performance of the Global Arrays Shared Memory Programming Toolkit , 2006, Int. J. High Perform. Comput. Appl..

[10]  Tarek A. El-Ghazawi,et al.  An evaluation of global address space languages: co-array fortran and unified parallel C , 2005, PPoPP.

[11]  Edward A. Luke,et al.  Loci: a rule-based framework for parallel multi-disciplinary simulation synthesis , 2005, J. Funct. Program..

[12]  Laxmikant V. Kalé,et al.  Supporting dynamic parallel object arrays , 2001, JGI '01.

[13]  Arie van Deursen,et al.  Domain-specific languages: an annotated bibliography , 2000, SIGP.

[14]  Torsten Suel,et al.  BSPlib: The BSP programming library , 1998, Parallel Comput..

[15]  Jack J. Dongarra,et al.  Automatically Tuned Linear Algebra Software , 1998, Proceedings of the IEEE/ACM SC98 Conference.

[16]  Matteo Frigo,et al.  The implementation of the Cilk-5 multithreaded language , 1998, PLDI.

[17]  Laxmikant V. Kalé,et al.  CHARM++: a portable concurrent object oriented system based on C++ , 1993, OOPSLA '93.

[18]  V. Sarkar,et al.  Collective Loop Fusion for Array Contraction , 1992, LCPC.

[19]  Donald D. Chamberlin,et al.  SEQUEL: A structured English query language , 1974, SIGFIDET '74.

[20]  Ian Karlin,et al.  Memory and Parallelism Tuning Exploration using the LULESH Proxy Application , 2012 .

[21]  B. Chamberlain,et al.  User-Defined Parallel Zippered Iterators in Chapel ∗ , 2011 .

[22]  Nisreen Cain,et al.  Work Replication: A Communication Optimization in Loci , 2008, PDCCS.

[23]  James Reinders,et al.  Intel threading building blocks - outfitting C++ for multi-core processor parallelism , 2007 .

[24]  L. Dagum,et al.  OpenMP: an industry standard API for shared-memory programming , 1998 .

[25]  Michael Metcalf,et al.  High performance Fortran , 1995 .

[26]  Cleve B. Moler,et al.  MATLAB-a mathematical visualization laboratory , 1988, Digest of Papers. COMPCON Spring 88 Thirty-Third IEEE Computer Society International Conference.

[27]  Jeffrey D. Ullman,et al.  Principles Of Database And Knowledge-Base Systems , 1979 .