1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking.org

NVIDIA's LLVM CUDA Compiler: Open-Source, 10% Faster

NVIDIA

Published on 26 January 2012 01:58 PM EST
Written by Michael Larabel in NVIDIA
10 Comments

Back in December there was an announcement from NVIDIA that they would open-source their CUDA compiler based upon the LLVM back-end. NVIDIA today released their new CUDA implementation that's based upon LLVM. Besides being open-source, which will allow it to be ported to new (non-NVIDIA) architectures/hardware, there's also a measurable speed boost in the switch over to LLVM.

NVIDIA announced its "major new NVIDIA CUDA release" this morning with promotingthat that this release makes it faster and easier to accelerate scientific research with GPUs. The three highlights of this major release is a re-designed visual profiler, a new compiler based upon LLVM, and hundreds of new imaging / signal processing functions.

NVIDIA's new visual profiler for CUDA allows for automated performance analysis and other benefits to those wanting to profile their CUDA applications. The new imaging / signal processing functions results in the size of the NVIDIA Performance Primitives library being doubled. But what's really exciting is the switch to the LLVM compiler infrastructure and NVIDIA open-sourcing the resulting compiler (they aren't required to per the LLVM BSD-style license).

The NVIDIA press release announcing this new work mentions that the new LLVM-based compiler for CUDA can offer immediate performance improvements by simply recompiling the Compute Unified Device Architecture code under this new compiler. Without any code/tuning changes, the new CUDA compiler can offer up performance improvements in some cases by around 10%. "New compiler, based on the widely-used LLVM open-source compiler infrastructure, delivering up to 10 percent speed up in application performance."

Within the NVIDIA press release from today, they also make it quite clear they are happy seeing the open-source CUDA ported to other architectures/devices. "LLVM's modular design allows third-party software tool developers to provide a custom LLVM solution for non-NVIDIA processor architectures, enabling CUDA applications to run across NVIDIA GPUs, as well as those from other vendors."

With optimizations toward the new compiler, it's possible to see an even greater impact from this Low-Level Virtual Machine compiler. The earlier code compiler used by NVIDIA within CUDA was Open64.

Besides the performance improvements and the new CUDA compiler being open-source (and it being allowed to port this NVIDIA compute architecture to new platforms), it's nice to see all the major vendors centering their GPU compute efforts on LLVM. AMD is using LLVM for its OpenCL support within the binary Catalyst graphics driver; they also open-sourced their IL code generator for LLVM. AMD is also working on a Gallium3D driver back-end for their open-source Radeon graphics driver as an intermediate representation. All of the Linux graphics drivers will be using LLVM in providing open-source OpenCL compute support. There's also the LLVM-using LunarGLASS implementation for Mesa that uses LLVM IR rather than TGSI.

Besides the DragonEgg plug-in that pairs the LLVM optimizers with the GCC compiler front-end, and the Clang compiler as a native C/Objective-C/C++ compiler front-end to LLVM, there continues to be a number of other growing uses for this open-source compiler infrastructure outside of OpenCL. LLVM is being used by the Mono project as part of it's JIT (Just-In-Time) engine, various scripting languages, an extension to the IcedTea-OpenJDK that enables the open-source Java implementation to run on any architecture where LLVM is supported, a D language compiler, Adobe is using LLVM for various projects, and various other uses. One of the more unique projects as of late is the LLVM-based EmScripten, which can turn LLVM bitcode into JavaScript. This allows translating most C/C++ code (or anything else that can be translated down into LLVM's bit-code) to be converted into JavaScript and executed within the web browser.

The latest CUDA (v4.1) release can be downloaded from NVIDIA's CUDA web-site for Linux, Mac OS X, and Windows platforms. Under Linux, NVIDIA offers up easy 32/64-bit packages for Fedora, Red Hat Enterprise Linux (RHEL5/RHEL6), Ubuntu, openSUSE, and SUSE Linux Enterprise Server. This is quite an exciting release with the switch to LLVM, the speed improvements, and open-source base just being part of the release highlights. Nice job, NVIDIA.

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Linux Hardware Reviews
  1. NVIDIA GeForce GTX 970 Offers Great Linux Performance
  2. CompuLab Intense-PC2: An Excellent, Fanless, Mini PC Powered By Intel's i7 Haswell
  3. From The Atom 330 To Haswell ULT: Intel Linux Performance Benchmarks
  4. AMD Radeon R9 285 Tonga Performance On Linux
Latest Linux Articles
  1. 6-Way Ubuntu 14.10 Linux Desktop Benchmarks
  2. Ubuntu 14.10 XMir System Compositor Benchmarks
  3. Btrfs RAID HDD Testing On Ubuntu Linux 14.10
  4. Ubuntu 14.10 Linux 32-bit vs. 64-bit Performance
Latest Linux News
  1. Mono Brings C# To The Unreal Engine 4
  2. Coreboot Now Has Support For Intel Broadwell Hardware
  3. Enlightenment's EFL 1.12 Alpha Has Evas GL-DRM Engine, OpenGL ES 1.1 Support
  4. GTK+ Lands Experimental Backend For Mir Display Server
  5. Ubuntu 14.10 Officially Released
  6. Mesa 10.4 Might Re-Enable HyperZ For R600g/RadeonSI
  7. Intel GVT-g GPU Virtualization Moves Closer
  8. GTK+ 3.16 To Bring Several New Features
  9. Debian 8.0 Jessie Has Many Multimedia Improvements
  10. What Linux Benchmarks Would You Like To See Next?
Latest Forum Discussions
  1. Updated and Optimized Ubuntu Free Graphics Drivers
  2. Linux hacker compares Solaris kernel code:
  3. HOPE: The Ease Of Python With The Speed Of C++
  4. Advertisements On Phoronix
  5. Users/Developers Threatening Fork Of Debian GNU/Linux
  6. Ubuntu 16.04 Might Be The Distribution's Last 32-Bit Release
  7. AMD Releases UVD Video Decode Support For R600 GPUs
  8. Proof that strlcpy is un-needed