Portable C++ Code that can Look and Feel Like Fortran Code with Yet Another Kernel Launcher (YAKL)
Open Access
- 8 December 2022
- journal article
- research article
- Published by Springer Nature in International Journal of Parallel Programming
- Vol. 51 (4-5) , 209-230
Abstract
This paper introduces the Yet Another Kernel Launcher (YAKL) C++ portability library, which strives to enable user-level code with the look and feel of Fortran code. The intended audience includes both C++ developers and Fortran developers unfamiliar with C++. The C++ portability approach is briefly explained, YAKL’s main features are described, and code examples are given that demonstrate YAKL’s usage. YAKL fills a niche capability important particularly to scientific applications seeking to port Fortran code quickly to a portable C++ library. YAKL places heavy emphasis on simplicity, readability, and productivity with performance mainly emphasizing Graphics Processing Units (GPUs). Central to YAKL’s ability to allow Fortran-like user-level code are three features: (1) a multi-dimensional Array class that allows Fortran behavior; (2) a limited library of Fortran intrinsic functions; and (3) an efficient pool allocator that transparently enables cheap frequent allocations and deallocations of YAKL Arrays. While YAKL allows Fortran-style code, it also allows Arrays that exhibit C-like behavior as well, including row-major index ordering and lower bounds of “0”. YAKL currently supports CPUs, CPU threading, and Nvidia, AMD, and Intel GPUs.Keywords
This publication has 10 references indexed in Scilit:
- SAM++: Porting the E3SM-MMF cloud resolving model using a C++ portability libraryThe International Journal of High Performance Computing Applications, 2021
- Unprecedented cloud resolution in a GPU-enabled full-physics atmospheric climate simulation on OLCF’s summit supercomputerThe International Journal of High Performance Computing Applications, 2021
- A high‐order WENO‐limited finite‐volume algorithm for atmospheric flow using the ADER‐differential transform time discretizationQuarterly Journal of the Royal Meteorological Society, 2021
- Data Parallel C++2020
- A Holistic Algorithmic Approach to Improving Accuracy, Robustness, and Computational Efficiency for Atmospheric DynamicsSIAM Journal on Scientific Computing, 2020
- RAJA: Portable Performance for Large-Scale Scientific Applications2019
- OpenMP device offloading to FPGA accelerators2017
- Kokkos: Enabling Performance Portability Across Manycore Architectures2013
- OpenACC — First Experiences with Real-World Applications2012
- Using MPI-21999