If GPU coprocessors are going to go mainstream as adjuncts to CPUs in workstations and servers, the programming has to get easier and developers have to be able to exploit the languages, libraries, and development tools they have traditionally been using to create applications for PCs and servers.
With the launch of the CUDA 3.1 development kit and the Parallel Nsight plug-in for Microsoft's Visual Studio IDE, Nvidia is several steps closer to splashing in that mainstream.
While the CUDA 3.1 software development kit, which you can get here, was announced today alongside the Parallel Nsight plug-in, Ian Buck, software director for GPUs at Nvidia, says the code has actually been available since June 23 and has already gotten tens of thousands of downloads.
The original CUDA 1.X toolkit from 2007 had a C compiler made by Nvidia and C extensions to allow routines to be dispatched to Nvidia GPUs in a workstation or server. The SDK could do single precision math on one or more GPUs in a machine and supported 64-bit Windows XP platforms. In 2008, with the CUDA 2.X toolkit and the next generation of GPUs, Windows Vista and Mac OS X support was added, as was the ability to do double-precision math calculations on the "Tesla" family of GPUs; the Parallel Nsight plug-in for Visual Studio went into beta that year.
With the CUDA 3.0 toolkit, which came out in March of this year concurrent more or less with the "Fermi" GPUs, Nvidia added support for C++ class templates and class inheritance, beefing up its C++ support. (The official Fortran compiler for Nvidia GPUs comes from Portland Group, and according to Buck, there is no plan for Nvidia to cook up its own Fortran - or Java or PHP or any other languages other than C and C++.)
With CUDA 3.1, the SDK is getting a feature called GPUDirect, a technology Nvidia has developed in conjunction with InfiniBand networking specialist Mellanox to allow direct GPU-to-GPU data transfers over InfiniBand networks without getting those silly CPUs (who think they run everything in the system) involved. The GPUDirect APIs are about more than an InfiniBand adapter, of course, and have been written to give any third party device a means of accessing GPU memory directly. GPUDirect is supported on Quadro graphics cards and Tesla GPUs.
As you can see from the release notes, CUDA 3.1 also gives 16-way kernel concurrency, allowing for up to 16 different kernels to run at the same time on Fermi GPUs. Buck said a bunch of needed C++ features were added, such as support for function pointers and recursion to allow for more C++ apps to run on GPUs as well as a unified Visual Profiler that supports CUDA C/C++ as well as OpenCL. The math libraries in the CUDA 3.1 SDK were also goosed, with some having up to 25 per cent performance improvements, according to Buck.
Looking ahead, it doesn’t look like the GNU C/C++ compiler will ever be ported by Nvidia to GPUs, but there's nothing stopping the open source community from doing so. Looking ahead to the future of CUDA, Buck says that generally speaking, anything that a CPU can do in terms of programming will have to be supported on the GPU. That's why Nvidia will be adding more and more C++ features to CUDA over time, adding new libraries for better supporting image processing and better exploiting the parallelism in the GPU to do calculations. Generally speaking, the idea will be to have applications rely less and less on the CPU and just let the GPUs do all of the hard work. The plan calls for integrating GPUs more deeply into systems and allowing job schedulers uses to control parallel supercomputing clusters to reach in and control GPUs as they do CPUs today.
The CUDA ecosystem is building nicely, says Sanford Russell, general manager of GPU software products at Nvidia. The company has shipped over 200 million CUDA-capable GPUs. Over 600,000 CUDA SDKs have been downloaded, and there are around 100,000 active GPU developers as best Nvidia can figure. There were over 8,000 beta testers for the Parallel Nsight plug-in for Microsoft's Visual Studio IDE, and 350 universities and colleges worldwide as using CUDA in their parallel programming coursework.
With Parallel Nsight, Nvidia has taken a bunch of tools for GPU computing and graphics processing that were standalone tools and packaged them up so they can plug into Microsoft's Visual Studio 2008 IDE and have the same look and feel for GPU cores, memory, and applications that a development workstation's CPU, memory, and code does inside of Visual Studio.
Parallel Nsight 1.0 will come in two versions. The Standard Edition, which includes a graphics debugger and a graphics inspector, is available starting today for free. The graphics debugger can debug Microsoft's HLSL graphics shading language right on the GPU as it is running, and examine how shaders are executing in parallel on the GPU. The graphics inspector does real-time examination of DirectX calls and the GPU pipeline state as applications step through their code. It also has a pixel history function to show how each operation in the application affects any pixel on the screen. The Standard Edition of Parallel Nsight can work on a standalone desktop or laptop.
The Professional Edition adds in parallel debuggers for compute, a system analyzer, premium support, and volume licensing. The parallel debugger allows coders working within Visual Studio to debug compute kernels right on the GPU hardware. (You'll need two GPUs to do this - one to run your display and one to debug the code.) The debugger will allow programmers to look at thousands of threads executing in parallel at the same time and use conditional breakpoints to fix their bugs. The system analyzer allows Visual Studio to show programmers what is going on inside the CPUs and GPUs on a timeline as code runs to help them fix and tune code. Parallel Nsight also has a remote debugging option, which allows developers working remotely from their machines to debug machines over the Internet from their workstation or laptop. The Professional Edition is a release candidate now, and will cost $349 per seat when it starts shipping in the next couple of months.
Both editions of Parallel Nsight run on Windows Vista, Windows 7, or Windows HPC Server 2008. At the moment, the plug-in only works with Visual Studio 2008 SP1. Support for Visual Studio 2010 is coming in the fourth quarter. The plug-in will work on Quadro G9X discrete graphics cards and higher and Tesla C1050/1070 GPUs and higher. ®