Project title:

Exploring GPGPU computing with Intel OneAPI tools


Alessandro Masini

Defense Year: 2023-2024

As of today, it is quite complex to write an entire high performance application(usually in C, C++, or Fortran) capable of running both on CPUs and GPUs from different vendors (NVDIA, Intel, AMD). Given this difficulty, in the last few years many efforts were dedicated to the creation of unified open frame-works for heterogeneous programming.

One of the results of these efforts is represented by the SYCL open standard, maintained by the Khronos Group. SYCL is a C++ based programming frame-work which aims to provide an alternative to single-architecture proprietary languages, allowing developers to write code for various hardware targets (CPUs and accelerators), and also tune applications for specific accelerators.

Another important result is represented by the inclusion of offloading capabilities in the OpenMP programming model. Since OpenMP 4.0 the language committee has been steadily adding features to the specification, in order to exploit modern accelerator hardware, while still providing a transparent programming model with a high level of usability.

Both the SYCL standard and the OpenMP programming model are implemented in the latest Intel compilers, which are part of the larger Intel OneAPI project.The project’s goal is to provide a cross-architecture programming platform, that allows developers to write and analyze code for multiple platforms in a unified fashion, without suffering vendor lock-in or needing multiple source files and different programming languages for different kinds of hardware.

The purpose of the present work is to test Intel OneAPI tools, specifically those devoted to GPU programming, from the performance and usability standpoints, and compare the results obtained using these tools, with comparable results obtained using other more widely known GPU-programming tools.