HPC across Intel, NVIDIA and AMD (oneAPI)

Introduction

  1. oneAPI focuses on HPC (High-Performance Computing).
  2. A part of oneAPI is DPC++ (Data Parallel C++).
  3. It provides parallelism for heterogeneous systems.
  4. DPC++ uses SYCL as programming model.
  5. It’s compiler dpcpp is based on Clang/LLVM.

This allows you to run parallelized computations on the GPU without the need to distinguish between CUDA (NVIDIA) and ROCm (AMD).


Workflow

            SYCL/C++ code 
(containing e.g. sycl::queue.parallel_for)
                 ↓
               dpcpp
                 ↓
         -----------------
         ↓               ↓
      CPU code        GPU Code
      x64/ARM/...     - Intel: SPIR-V (via LLVM SPIR)
                      - NVIDIA: PTX (via LLVM NVPTX)
                      - AMD: HSACO (via LLVM AMDGPU)
         ↓               ↓
         -----------------
                ↓
            Executable
(contains CPU/GPU code and links SYCL runtime)