GPU computing has gone mainstream. It is a dominant part of the performance landscape, providing the initial 10x performance lift to a wide variety of applications. However, programing for GPUs can be extremely challenging. C++ is rarely available in an unmodified form, and there are few portable and open source approaches available. One of the most popular platforms,
CUDA, has no production quality open source implementation. As a consequence, its C++ support has lagged behind and it has been a less appealing area for researchers and others that weren’t comfortable relying on NVIDIA’s tooling.
However, today things are different.
Clang is now a fully functional open-source GPU compiler. It provides a
CUDA-compatible programming model and can compile most of the awesome CUDA libraries out there ranging from Thrust (the
CUDA-enabled parallel algorithms library that gave rise to the new parallelism technical specification) to
Eigen and
TensorFlow.
In this talk we will give an overview of how
LLVM and
Clang support targeting C++ to GPUs, how they work to be compatible with existing
CUDA code, and how you can build your code today to run on GPUs with this open source compiler.