Portable C++ Code that can Look and Feel Like Fortran Code with Yet Another Kernel Launcher (YAKL)
National Center for Computational Sciences, Oak Ridge National Laboratory, 1 Bethel Valley Rd, Oak Ridge, TN 37830, USA
International Journal of Parallel Programming, 2022
@article{norman2022portable,
title={Portable C++ Code that can Look and Feel Like Fortran Code with Yet Another Kernel Launcher (YAKL)},
author={Norman, Matthew and Lyngaas, Isaac and Bagusetty, Abhishek and Berrill, Mark},
journal={International Journal of Parallel Programming},
pages={1–22},
year={2022},
publisher={Springer}
}
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.
December 19, 2022 by hgpu