NVIDIA's CUDA Compiler (NVCC) is based on the widely used LLVM open source compiler infrastructure. Developers can create or extend programming languages with support for GPU acceleration using the NVIDIA Compiler SDK.
You can add support for GPU acceleration to a new or existing language by creating a language-specific frontend that compiles your language to the internal representation (IR) used by LLVM. Many language frontends already exist.
The IR generated by your front end is then optimized for execution on your target device. You can add support for a new device by developing a processor-specific backend which will perform the final compilation on the optimized LLVM IR.
NVIDIA has worked with the LLVM organization to contribute the CUDA compiler source code changes to the LLVM core and parallel thread execution backend, enabling full support of NVIDIA GPUs.
The SDK contains documentation, examples and tested binaries to get you started on your own GPU accelerated compiler project.
The following components of the NVIDIA Compiler SDK are shipped as part of the latest CUDA Toolkit Installer:
More libNVVM examples are provided at GitHub
NVIDIA has contributed key enhancements to the LLVM project to enable support of CUDA and massively parallel accelerators such as GPUs. Source is available from the LLVM Project Home Site.