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.

Latest Linux Hardware Reviews
  1. Overclocking The AMD AM1 Athlon & Sempron APUs
  2. AMD Athlon 5350 / 5150 & Sempron 3850 / 2650
  3. Upgraded Kernel & Mesa Yield A Big Boost For Athlon R3 Graphics
  4. AMD Athlon 5350 APU On Linux
Latest Linux Articles
  1. A Quick Look At GCC 4.9 vs. LLVM Clang 3.5
  2. Are AMD Athlon/Sempron APUs Fast Enough For Steam On Linux?
  3. AMD Athlon's R3 Graphics: RadeonSI Gallium3D vs. Catalyst
  4. GCC 4.9 Compiler Optimization Benchmarks For Faster Binaries
Latest Linux News
  1. Maynard: A Lightweight Wayland Desktop
  2. Chromium Browser Going Through Growing Pains In Ubuntu 14.04
  3. KDE 4.13 Is Being Released Today With New Features
  4. Trying Out Radeon R9 290 Graphics On Open-Source
  5. Intel Broadwell GT3 Graphics Have Dual BSD Rings
  6. Early Linux 3.15 Benchmarks Of Intel Core i7 + Radeon
  7. Red Hat Releases Its RHEL 7 Release Candidate
  8. New Features Coming To Xubuntu 14.04 LTS
  9. NVIDIA Officially Releases CUDA 6
  10. Google Releases An AutoFDO Converter For Perf In LLVM
  11. Fedora 21 To Evaluate Remote Journal Logging, 64-bit ARM Emulation
  12. Star Citizen Will Be Coming To Linux
Latest Forum Discussions
  1. The GNOME Foundation Is Running Short On Money
  2. Linux Kernel Developers Fed Up With Ridiculous Bugs In Systemd
  3. Bye bye BSD, Hello Linux: A Sys Admin's Story
  4. New tool for undervolt/overclock AMD K8L and K10 processors
  5. How to enable opengl 3.3 on r9 270?
  6. R290x sound problems
  7. radeon-profile: tool for changing profiles and monitoring some GPU parameters
  8. Torvalds Is Unconvinced By LTO'ing A Linux Kernel