NVIDIA Shifts CUDA Into Third Gear
In anticipation of the upcoming Fermi Tesla product launch, NVIDIA has released the CUDA 3.0 Toolkit. Besides support for Fermi silicon, the software comes with a number of other GPGPU goodies designed to ease the task of general-purpose GPU computing. The new toolkit was announced last Friday in a blog post on the company’s Web site.
NVIDIA has been methodically building a software ecosystem alongside its GPU silicon since it introduced the CUDA architecture in 2007. CUDA 3.0 represents the third major revision of its software stack for GPU computing. The first two CUDA versions drummed up enough interest by early adopters to showcase the potential of GPGPU in high performance computing and advanced visualization applications. According to Sanford Russell, NVIDIA’s general manager of GPU computing, the idea behind CUDA 3.0 is to reach mainstream developers. “At the beginning it was the brave, then it was the smart, then it was the talented,” says Russell. “And now we’re trying to get to the mass market of programmers.”
Fortunately for NVIDIA, they have a running start. Downloads for CUDA Toolkits 2.0, 2.1 and 2.2 leveled off between 80,000 to 120,000. But CUDA 2.3, introduced in July, has already hit 160,000 downloads and is adding new users at a clip 20,000 per month, with no sign of leveling off. Russell attributes this to a number of factors, including the right mix of software features as well as the aggressive outreach to GPGPU developers and partners. Supporting the latter point, CUDA is now taught in over 300 universities worldwide.
Perhaps even more important to the popularity of version 2.3 is the fact that CUDA-compatible processors started being widely available in notebooks and laptops in 2009, significantly increasing the potential user base for GPU computing. NVIDIA estimates that over 180 million CUDA architecture GPUs have been installed. “Being pervasive is a really good thing,” notes Russell.
With the Fermi Tesla 20-series gear just weeks away from its official launch, NVIDIA wants to make sure the new products have the software support in place to attract developers. To tap into the new Fermi capabilities, the 3.0 toolkit adds hooks for native 64-bit processing, generic address space support, ECC reporting, dual-DMA support, and concurrent kernel execution. Object-oriented programming for C++ is also included, specifically class and template inheritance.
Although the new Fermi-based Tesla offerings will be available to order in April, actual hardware shipments will take place later in Q2. That should allow plenty of time for HPC end users to get started with CUDA 3.0 development. Since Fermi represents the first GPU with substantial double precession floating point capability (in the neighborhood of half a teraflop per processor) plus ECC memory support, NVIDIA is positioning the new platform as a game-changer for technical computing applications. Getting software support out in front of the hardware is going to be especially important for HPC users looking to deploy Fermi-accelerated systems later in 2010.
NVIDIA is also pushing hard to make sure GPU developers have programmer-friendly tools. On Windows, the Parallel Nsight development environment (previously code-named “Nexus”) coalesces CPU and GPU programming inside the popular Visual Studio toolset. Nsight encapsulates a source code debugger, analyzer and graphics inspector and will support CUDA C, OpenCL, DirectCompute, Direct3D, and OpenGL. Currrently in beta, NVIDIA says more than 5,000 developers have signed up thus far.
Linux support is less developed, reflecting the fact that no Visual Studio counterpart exists on the open source OS. A CUDA-capable debugger and memory checker are available, but a general-purpose development platform has yet to appear. Fixstars, which introduced a commercial CUDA Linux distro earlier this month, is said to be working on an Eclipse integration.
At the library level, a complete set of BLAS routines is now available, including support for complex numbers. Independent developers are also chipping in. Jack Dongarra at the University of Tennesse and EM Photonics are independently working on CUDA-accelerated versions of LAPACK, which will advance the case for GPGPU across a range of HPC applications, including electromagnetic simulation, antenna simulation, QCD, and similar type codes.
NVIDIA has also upgraded its OpenCL SDK, adding enhanced functionality for image filtering, double precision support, and graphics interoperability between OpenCL, Direc3D9, Direct3D10, and Direct3D11 for high performance visualization. Low-level support for byte addressable stores, new atomic operations and pragma unroll has also been included. Since OpenCL is included with standard NVIDIA drivers, users don’t necessarily need to download the CUDA Toolkit to get the upgraded implementation.
Besides upgrades for CUDA C/C++ and OpenCL, the new toolkit also includes a number of other tweaks designed to take GPU computing to the next level. A complete list of features, drivers and language support, as well as all the download links are available on the NVIDIA’s CUDA 3.0 developer site. Video demos of Parallel Nsight (set to music, no less) can be seen here.