NVIDIA today announced that it will provide the source code for the new NVIDIA CUDA LLVM-based compiler to academic researchers and software-tool vendors, enabling them to more easily add GPU support for more programming languages and support CUDA applications on alternative processor architectures.
LLVM is a widely-used open source compiler infrastructure with a modular design that makes it easy to add support for new programming languages and processor architectures. It is used for a range of programming requirements by many leading companies, including Adobe, Apple, Cray, Electronic Arts, and others.
The new LLVM-based CUDA compiler, which is enhanced with architecture support for NVIDIA's parallel GPUs, is included in the latest release of the CUDA Toolkit (v4.1), now available to the public.
"Opening up the CUDA platform is a significant step," said Sudhakar Yalamanchili, professor at Georgia Institute of Technology and lead of the Ocelot project, which maps software written in CUDA C to different processor architectures. "The future of computing is heterogeneous, and the CUDA programming model provides a powerful way to maximize performance on many different types of processors, including AMD GPUs and Intel x86 CPUs."
Enabling alternative approaches to programming heterogeneous parallel systems for domain-specific problems and future programming models will help accelerate the path to exascale computing. By releasing the source code to the CUDA compiler and internal representation (IR) format, NVIDIA is enabling researchers with more flexibility to map the CUDA programming model to other architectures, and furthering development of next-generation higher performance computing platforms.
Software tools vendors can also access compiler source code technology to build custom solutions.
"This initiative enables PGI to create native CUDA Fortran and OpenACC compilers that leverage the same device-level optimization technology used by NVIDIA CUDA C/C++," said Doug Miles, director of The Portland Group. "It will enable seamless debugging and profiling using existing tools, and allow PGI to focus on higher-level optimizations and language features."