July 22, 2010

NVIDIA Launches GPGPU Plug-In for Visual Studio

Michael Feldman

After a nine-month gestation in beta, NVIDIA has delivered version 1.0 of Parallel Nsight, the company’s GPU computing development plug-in for Microsoft’s Visual Studio. The product consists of a set of debugging and analysis tools that enables Windows developers to play with their GPU compute and graphics apps in the popular Visual Studio IDE. Coincident with the Nsight launch, NVIDIA is also offering a point release (version 3.1) of its CUDA software development kit.

The idea behind Nsight is to ramp up GPU computing application development and NVIDIA figured the shortest route was through Microsoft’s uber-popular Visual Studio environment. NVIDIA has been working hard to support GPGPU development, mainly via its CUDA compiler kit and other development tools. Over 600 thousand CUDA toolkits have been downloaded over the past two years, and 8 thousand registered for the Parallel Nsight beta program. But considering more than 6 million developers are using Visual Studio today, the upside for expanding GPU computing development via Windows is potentially huge.

On the compute side, Nsight supports debugging of CUDA C/C++ apps, which is what the vast majority NVIDIA’s customers are using for GPGPU. According to Sanford Russell, GM of GPU Computing at NVIDIA, they have plans to support OpenCL and DirectCompute down the road, but obviously wanted to go with their flagship GPU language on the first release. “We’ve got a ton of CUDA C customers,” he said.

Even though this is the maiden voyage for Parallel Nsight, the development tools upon which it is based have been around for awhile. Essentially NVIDIA integrated its existing GPU computing tools (nvcc, cuda-gdb, cuda-memcheck, Visual Profiler, and cudaprof) and graphics computing tools (FX Composer, Shader Debugger, PerfHUD, ShaderPerf, and Platform Analyzer) into the Video Studio framework. Since these components are anywhere from two to six years old, the toolset behind Nsight is relatively mature.

Nsight is being released in standard and professional editions, with the latter requiring you to fork over some cash. This is not exactly typical for NVIDIA, which tends to give away its development tools for free in order to grease the wheels for hardware sales. But Nsight is a more highly polished product than say a standalone driver or compiler, so NVIDIA has apparently decided recoup some its development costs through a paid licensing scheme. That said, licenses for the Pro version will be provided free of charge to NVIDIA’s academic partners, including any of the 11 CUDA Centers of Excellence, 5 CUDA Research Centers, 7 CUDA Teaching Centers, or any group in the Academic Partnership Program.

A detailed description of features, tools and licensing is laid out on NVIDIA’s Parallel Nsight Web page, so I won’t rehash it all here. However, it’s probably worth mentioning what’s missing from this first release.

Besides no debugger for OpenCL and DirectCompute mentioned above, the big omission in 1.0 is any support for Linux. That’s not too surprising considering this is a Windows product. But since Nsight does have a network capability that supports code debugging, analysis and inspection on a remote machine, they could have added a Linux target monitor that talked to the Windows Nsight host. That would also necessitate supporting a Linux cross-development environment on Windows.

Whether NVIDIA will ever support such a beast or a pure Linux host/target version of Nsight is not clear. The standalone GPU development tools that were integrated into Visual Studio are already available on Linux, just not as part of an integrated development environment (IDE) like Visual Studio. Now if you’re an old-time Linux programmer, you don’t need any stinking IDE anyway, so that’s just as well. In fact, you don’t even need a debugger; printf will do just fine, which, by the way, NVIDIA has conveniently added to the latest CUDA SDK.

But there are probably a number of developers who wouldn’t mind seeing an Eclipse IDE version of Nsight on Linux, and certainly would like to see target support for Linux cluster nodes, considering Windows has only about a 10 percent share of HPC platforms at this point. Sanford said the Windows downloads of the CUDA toolkit currently outnumber Linux downloads by about two-to-one. According to Sanford, in some cases, programmers will do code development, debugging and testing on Windows desktops and then recompile the code when they need to expand the problem size and run it on their Linux cluster.

As of now, debugging and analyzing applications can only be accomplished on a single target machine. GPU cluster support is not available. Neither is concurrent CPU-GPU debugging — you either do one or the other — although a future version of Nsight will likely include an integrated heterogeneous debugging capability.

“That’s why we call it a 1.0,” said Sanford. “There’s a long roadmap ahead.”