Portable SYCL Code Using oneMKL on AMD, Intel, and Nvidia GPUs

Hugh Bird, Codeplay
Rafal Bielski, Codeplay
Duncan McBain, Codeplay
pps graphic

Portable SYCL code using oneMKL on AMD, Intel, and Nvidia GPUs, presented by CodePlay and Intel, is part of the Performance Portability training series. Offered by NERSC, OLCF, and ALCF, the series features training sessions on various performance portable programming solutions to help ease developer transitions between current and emerging high-performance computing (HPC) systems, such as the NERSC Perlmutter and ALCF Polaris (AMD CPU and Nvidia GPU), OLCF Frontier (AMD CPU and GPU), and ALCF Aurora (Intel CPU and GPU).


Portable SYCL code using oneMKL on AMD, Intel, and Nvidia GPUs

With supercomputers such as Aurora, Polaris, Perlmutter, and Frontier deployed across DOE national laboratories, there is now a range of GPU-based architectures for researchers to use from different vendors. The good news is that it is possible to write code using a single programming model and language deployable across all these supercomputers and more. 

In this session, we will show you how to achieve portable code using the oneMKL library. oneMKL is based on the oneAPI specification and can be used to target multi-vendor and multi-architecture accelerators from a single code base. It is also now governed by the Unified Acceleration Foundation (UXL), an open governance body that is part of the Linux Foundation. We will also talk about the GROMACS and NWChem projects that are benefitting from using the oneMKL library to target Intel, Nvidia, and AMD GPUs, with discrete Fourier transforms as an example. The oneMKL interface library makes this possible with minimal overhead using SYCL backend interoperability.