PACT15 Tutorial on Software Stacks for Next-Gen Production Codes

PACT15 Tutorial on Software Stacks for Next-Gen Production Codes

Tutorial Presentation

Addressing the major challenges of software productivity and performance portability is becoming necessary to take advantage of emerging computing architectures. The hardware complexity and heterogeneity of incoming architectures involves a redesign of the software stack to make it more flexible and scalable, as well as more modular to support a wider diversity of devices. Furthermore, we must address the challenges of next-gen architectures while continuing to deliver on programmatic missions as we upgrade our software. As software development costs continue to increase to address this issue, higher-level programming abstraction will facilitate the path going forward. There is a growing demand for new programming environments in order to improve scientific productivity, to facilitate better design and implementation, and to optimize next-generation production codes.

This tutorial will bring together developers and researchers of parallel programming languages, middleware, runtime systems and applications. It is an opportunity for developers to see how other teams compose programming models and abstraction layers in their scientific applications to achieve performance portability.

Tutorial Program

08:55 Welcome & Introduction

09:00 LOCI - Edward Luke, Mississippi State University

Loci is an automatic parallelizing framework for irregular numerical models that has been supporting the development of production simulation codes. Extensions to the model are being developed to support integrated vector, thread, and distributed memory parallelism which are requiring significant restructuring of the underlying system software. Lessons learned and future directions will be discussed.

09:30 RAJA Portability Layer - Jeff Keasler, LLNL

RAJA is a thin abstraction layer consisting of a parallel-loop construct for managing work and an IndexSet construct for managing data. The composition of these components allows architecture specific details of programming models, vendor compilers, and runtime implementations to be encapsulated at a single code site, isolating software applications from portability-related disruption.

10h00 Kokkos: Enabling Performance Portable Codes for Future Architectures - Christian Trott, SNL

Kokkos is a production level abstraction layer which allows a user to write performance portable C++ code targeting existing and future architectures. It is an implementation of a general purpose node level parallel programming model and is getting introduced in applications and libraries such as: LAMMPS, Trilinos, Albany, and Uintah.

10:30 Break

11h00 Nebo: an Embedded Domain-Specific Language for Platform-Agnostic PDE Solvers - James Sutherland & Tony Saad, University of Utah

SpatialOps/Nebo is a domain-specific language embedded in C++ to facilitate portable operations on structured mesh calculations. It is currently used in a number of multiphysics applications including multiphase, turbulent reacting flows. It provides a high-level interface that separates the structure of the calculation from the actual low-level code that is generated for a particular platform.

11:30 & MPC - Jean-Sylvain Camier, CEA-DAM

∇ is a numerical-analysis specific language which provides a productive development way for HPC technologies, flexible enough to be competitive in terms of performances.
The MPC (MultiProcessor Computing) framework provides a unified parallel runtime designed to improve the scalability and performances of applications running on clusters of large multiprocessor/multicore NUMA nodes.

12h00 Questions & Answers

12:30 Lunch break

14:00 Parallel Open Session with Demonstrations

16:00 Adjourn