2022-03-03 All-Hands Presentation Meeting Notes
Presenter: Matthew Norman
Title: Introduction to the YAKL C++ Portability Library
Abstract:
The Yet Another Kernel Launcher (YAKL) C++ portability library (github.com/mrnorman/YAKL) supports the E3SM project with an emphasis on simplicity, readability, and porting Fortran code to C++. YAKL currently fully supports serial CPU, OpenMP CPU threading, AMD GPU, Nvidia GPU, and Intel GPU backends. Among other features, YAKL includes a multi-dimensional array class, a "parallel_for" kernel launcher, and an efficient non-blocking pool allocator. The multi-dimensional arrays allow Fortran-like behavior with column-major index ordering, arbitrary lower bounds that default to one, and basic slicing. C-style behavior is supported as well, leaving the style of arrays to the developer's preference. YAKL also includes a (growing) subset of Fortran intrinsic functions like size, minval, maxloc, allocated, etc. The pool allocator allows the user to efficiently allocate and deallocate anywhere outside of kernels without fear of performance degradation. YAKL has Fortran hooks for its pool allocator, allowing easier data sharing between Fortran and C++. Summed together, YAKL's features significantly reduce the effort required to port a Fortran code to portable C++ with wide portions of the code looking nearly identical to the original Fortran. It can be a useful choice for new codes as well, even without the Fortran styling features.
A portion of the presentation will be dedicated to the notion of readability and productivity in the user-level code. YAKL's aim is to keep the syntax simple and require minimal concerns from the developer regarding performance and C++ complexity, and this necessarily reduces the feature set to some extent. Therefore, it will also be discussed in what situations a developer should consider a larger framework like Kokkos instead. Performance for codes using YAKL on the CPU and GPU will also be covered.
Date
Time
- PT: 8:30 am
- ET: 11:30 am
Call Info
- web session: https://global.gotomeeting.com/join/570361173
- call number: (571) 317-3122 Access Code: 570-361-173, If busy, use alternate number: (773) 945-1029
Joining from a video-conferencing room or system? Dial: 67.217.95.2##570361173 , Cisco devices: 570361173@67.217.95.2
Attendees:
- Matthew Norman
- Wuyin Lin
- Qi Tang
- Darin Comeau
- Nicole Jeffery
- Hailong Wang
- Chris Golaz
- Xylar Asay-Davis
- fnu Quazi Ziaur Rasool (Unlicensed)
- Philip Jones
- Stephen Leak (Unlicensed)
- Ruby Leung
- Jim Benedict
- Jon Wolfe
- Sha Feng
- Charlie Zender
- Bryce Harrop
- Ryan Forsyth
- Mingxuan Wu
- Steven Brus
- Carolyn Begeman