GPU Compute

Platforms, Frameworks, Tools

  • NVIDIA: CUDA
  • AMD: ROCm
  • Khronos: OpenCL, Vulkan (replacement for OpenGL) → Kompute, SYCL
  • Intel: oneAPI → SYCL (Khronos)

SYCL

It’s important to note that SYCL needs to rely on another tool as a ‘backend’ and there are, for example, CUDA and OpenCL backends.

oneAPI

Intel provides implementations of both SYCL (through the Intel DPC++ compiler) and of the APIs.

oneAPI ecosystem include:

OpenCL

  • OpenCL is more verbose than CUDA
  • OpenCL separates Kernel code into files that are distinct from the host C/C++ in contrast to CUDA’s ‘single file’ approach.

Apple deprecated OpenCL in MacOS 10.14 (released in 2019) and now prompts developers to use Metal instead. AMD has de-emphasized support for OpenCL in favor of HIP.

ROCm

AMD’s track record of support for their tools does not completely inspire confidence. AMD favored OpenCL for a period, then HCC but has now switched to HIP / HIPIFY.

SPIR

SPIR stands for ‘Standard Portable Intermediate Representation’. It provides a common ‘intermediate representation’ for Kernels in OpenCL and Vulkan.


  • CUDA’s (Nvidia, 2007) introduction was a major milestone in making GPGPU programming accessible.
  • OpenCL (Khronos, 2009) has the widest support across platforms and is the most mature open standard but development has slowed, and it’s been abandoned/deemphasized by Apple and AMD.
  • SYCL (Khronos, 2014) provides a way of deploying C++ across a range of platforms.
  • ROCm (AMD, 2016) tries to obtain a degree of interoperability with CUDA and Nvidia hardware.
  • oneAPI (mainly Intel, 2020) is effectively an enhancement of SYCL and provides a way of deploying a C++ code base across multiple platforms, including Nvidia GPUs.

1

Last Modified: 2024/04/21 01:42:45

is a collection of Papers I have written.
© 2000 - Sang Park Except where otherwise noted, content on this site is licensed under a CC BY 4.0.
This site design was brought from Distill.