Wasatch: An architecture-proof multiphysics development environment using a Domain Specific Language and graph theory

Abstract To address the coding and software challenges of modern hybrid architectures, we propose an approach to multiphysics code development for high-performance computing. This approach is based on using a Domain Specific Language (DSL) in tandem with a directed acyclic graph (DAG) representation of the problem to be solved that allows runtime algorithm generation. When coupled with a large-scale parallel framework, the result is a portable development framework capable of executing on hybrid platforms and handling the challenges of multiphysics applications. We share our experience developing a code in such an environment – an effort that spans an interdisciplinary team of engineers and computer scientists.

[1]  Bradley C. Kuszmaul,et al.  The pochoir stencil compiler , 2011, SPAA '11.

[2]  James R. Stewart,et al.  A framework approach for developing parallel adaptive multiphysics applications , 2004 .

[3]  Justin Luitjens,et al.  Improving the performance of Uintah: A large-scale adaptive meshing computational framework , 2010, 2010 IEEE International Symposium on Parallel & Distributed Processing (IPDPS).

[4]  David R. Musser,et al.  STL tutorial and reference guide - C++ programming with the standard template library , 1996, Addison-Wesley professional computing series.

[5]  H. Carter Edwards,et al.  Managing complexity in massively parallel, adaptive, multiphysics applications , 2006, Engineering with Computers.

[6]  James C. Sutherland,et al.  Nebo: An efficient, parallel, and portable domain-specific language for numerically solving partial differential equations , 2017, J. Syst. Softw..

[7]  Qingyu Meng,et al.  Past, present and future scalability of the Uintah software , 2012 .

[8]  Andrei Alexandrescu,et al.  Modern C++ Design , 2001 .

[9]  Kunle Olukotun,et al.  Composition and Reuse with Compiled Domain-Specific Languages , 2013, ECOOP.

[10]  Martin Berzins,et al.  Large Scale Parallel Solution of Incompressible Flow Problems Using Uintah and Hypre , 2013, 2013 13th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing.

[11]  James C. Sutherland,et al.  The Discrete Operator Approach to the Numerical Solution of Partial Differential Equations , 2011 .

[12]  A. B. Kahn,et al.  Topological sorting of large networks , 1962, CACM.

[13]  Qingyu Meng,et al.  DAG-Based Software Frameworks for PDEs , 2011, Euro-Par Workshops.

[14]  Daniel Sunderland,et al.  Kokkos Array performance-portable manycore programming model , 2012, PMAM '12.

[15]  Richard D. Hornung,et al.  The RAJA Portability Layer: Overview and Status , 2014 .

[16]  James C. Sutherland,et al.  Graph-Based Software Design for Managing Complexity and Enabling Concurrency in Multiphysics PDE Software , 2011, TOMS.

[17]  Tamara G. Kolda,et al.  An overview of the Trilinos project , 2005, TOMS.

[18]  Jean-Sylvain Camier Improving Performance Portability and Exascale Software Productivity with the ∇ Numerical Programming Language , 2015 .

[19]  Justin Luitjens,et al.  Dynamic task scheduling for the Uintah framework , 2010, 2010 3rd Workshop on Many-Task Computing on Grids and Supercomputers.

[20]  Robert D. Falgout,et al.  hypre: A Library of High Performance Preconditioners , 2002, International Conference on Computational Science.

[21]  Matt Martineau,et al.  A Performance Evaluation of Kokkos & RAJA using the TeaLeaf Mini-App , 2015, SC 2015.

[22]  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).

[23]  John Reynders The POOMA FrameWork - A Templated Class Library for Parallel Scientific Computing , 1997, PPSC.