AllScale toolchain pilot applications: PDE based solvers using a parallel development environment - O’Donncha, Fearghal; Iakymchuk, Roman; Akhriev, Albert; Gschwandtner, Philipp; Thoman, Peter; Heller, Thomas; Aguilar, Xavier; Dichev, Kiril; Gillan, Charles; Markidis, Stefano; Laure, Erwin; Ragnoli, Emanuele; et al. (Computer physics communications, 2020)
AllScale is a programming environment targeting simplified development of highly scalable parallel applications by dividing development responsibilities into silos. The front-end AllScale API provides a simple C++ development environment through a suite of parallel constructs expressions denoting tasks operating concurrently. This interfaces with the other components of the toolchain (core-level API, compiler and runtime) which manages tasks related to the machine and system level, hidden to the user. The paper describes the development of two large-scale parallel applications within the AllScale API, namely, an advection– diffusion model with data assimilation and a Lagrangian space-weather simulation model based on a particle-in-cell method. We present mathematical formulations and implementations and evaluate parallel constructs developed using the AllScale API. The performance of the applications from the perspective of both parallel scalability, and more importantly productivity are assessed. We demonstrate how the AllScale API can greatly improve developer productivity while maintaining parallel performance in two applications with distinct numerical characteristics. Code complexity metrics demonstrate reduction in application specific implementations of up to 30% while performance tests on three different compute systems demonstrate comparable parallel scalability to an MPI version of the code. •Presents a programming environment for simplified development of HPC applications.•Separation of responsibilities between the domain scientist and HPC expert or developer.•Applied to two pilot applications related to data assimilation and particle in cell code.•Enhances developer productivity while maintaining parallel scalability of applications.