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. Trying The Configurable 45 Watt TDP With AMD's A10-7800 / A6-7400K
  2. Sumo's Omni Gets Reloaded
  3. AMD A10-7800 & A6-7400K APUs Run Great On Linux
  4. Radeon Gallium3D Is Running Increasingly Well Against AMD's Catalyst Driver
Latest Linux Articles
  1. Intel Sandy Bridge Gets A Surprise Boost From Linux 3.17
  2. Open-Source Radeon Graphics Have Some Improvements On Linux 3.17
  3. CPUFreq Scaling Tests With AMD's Kaveri On Linux 3.16
  4. Enabling HyperZ Is Still An Easy Way For Faster RadeonSI Performance
Latest Linux News
  1. Userptr Support Set For AMD Radeon GPUs In Linux 3.18
  2. NVIDIA Releases CUDA 6.5 As A Huge Update
  3. GNOME 3.14 Beta Makes GLSL Optional, Supports Wayland Gesture/Touch Events
  4. KDE Software Compilation 4.14 Released
  5. The Many Things You Can Build With A Raspberry Pi
  6. AMD's Catalyst Linux Driver Preparing For A World Without An X Server?
  7. Khronos Publishes Its Slides About OpenGL-Next
  8. Proposed: A Tainted Performance State For The Linux Kernel
  9. Systemd 216 Piles On More Features, Aims For New User-Space VT
  10. LXQt 0.8 Is Being Released Soon
Latest Forum Discussions
  1. The dangers of Linux kernel development
  2. Remote gui not accessible in Phoronix Test Suite 5.2
  3. Dead Island for Linux (?)
  4. Updated and Optimized Ubuntu Free Graphics Drivers
  5. AMD Offers Mantle For OpenGL-Next, Pushes Mantle To Workstations
  6. Next-Gen OpenGL To Be Announced Next Month
  7. OpenGL 4.5 Released With New Features
  8. Updated graphics drivers for Ubuntu 12.04 Precise LTS