Everybody wants CUDA, right?

Intel offers an escape route.

Jon Peddie

Nvidia’s CUDA GPU programming has limitations due to its proprietary nature, leading to a reliance on Nvidia’s schedule and priorities. In response, Khronos developed SYCL, a royalty-free, cross-platform abstraction layer based on OpenCL, enabling code for heterogeneous processors to be written in standard C++. Intel is hosting a class at Siggraph to teach programmers how to migrate CUDA code to SYCL using SYCLomatic and Intel’s oneAPI DPC++/C++ Compiler, an open-source implementation of SYCL. This provides a streamlined path to portability and offers optimization techniques for enhanced efficiency and performance on GPUs from Intel, Nvidia, and AMD.

SYCL logo
(Source: Khronos)

For those who prefer open software over proprietary software, Nvidia’s ubiquitous CUDA GPU programming gateway has been problematic. CUDA works fine, gets updated regularly, and has dozens of useful libraries from Nvidia and third parties that make it extensible and robust—it’s a living thing.

So what’s the problem?

It’s like Microsoft’s Windows—once you commit, you are stuck, and you must take the good along with the bad, on a schedule dictated by the supplier. And in the case of CUDA, Nvidia doesn’t charge for it, so its bug fix and feature update may not always be priority one for the for-profit organization.

Khronos, the not-for-profit community API and software tools organization, developed an alternative to CUDA, called SYCL (pronounced “sickle”). SYCL is a royalty-free, cross-platform abstraction layer which builds on the underlying concepts, portability, and efficiency of OpenCL that enables code for heterogeneous processors to be written in a “single-source” style using completely standard C++.

SYCL is a name and not an acronym. In particular, SYCL developers made clear that the name contains no reference to OpenCL. What’s the difference between OpenCL and SYCL? OpenCL uses explicit memory management, whereby the programmer is responsible for explicitly allocating and deallocating memory on the device. SYCL provides a memory model whereby the runtime system handles memory allocation and deallocation.

At Siggraph, on August 10, 2023, from 9:00 am to 11:00 am PDT, Intel is going to hold a class to show CUDA users and would-be CUDA users how to just say no to CUDA and seamlessly migrate CUDA code to SYCL code with SYCLomatic.

Using C++ with SYCL code using SYCLomatic offers a streamlined path to converting even complex CUDA code to SYCL for portability between diverse systems, says Intel.

At the Siggraph class, programmers will learn how to master the fundamentals of C++ with SYCL and learn the portability advantages of using SYCLomatic. They will discover the best ways to overcome challenges faced when porting CUDA code to C++ with SYCL, and they will learn the optimization techniques to enhance the code following migration to gain efficiency and boost performance.

Spoiler alert: The attendees will also learn how to migrate CUDA programs to SYCL using Intel’s oneAPI DPC++/C++ Compiler (from the Intel oneAPI Base Toolkit), which is also an open-source implementation of SYCL based on the LLVM compiler project that enables a person to target GPUs from Intel, Nvidia, and AMD.

If you’re interested in learning about SYCLomatic, you can register here.