NVIDIA GPU programming in standard C

NVIDIA have announced a new computing architecture which allows for direct access to GPUs. This is huge news for anyone in involved in HPC or games programming!

This should finally make the stream processing capabilities of GPUs available to a programmer without the need for them to refactor all processing into a computer graphics model. Current methods for stream processing on a GPU use image buffers to store data and process the data using fragment shaders, written in custom languages such as GLSL and Cg.

From the CUDA webpage (I italicised some key points):

Developing with CUDA
The CUDA software development kit (SDK) is a complete software development solution for programming CUDA-enabled GPUs. The SDK includes standard FFT and BLAS libraries, a C-compiler for the NVIDIA GPU and a runtime driver. The CUDA runtime driver is a separate standalone driver that interoperates with OpenGL and Microsoft® DirectX® drivers from NVIDIA. CUDA technology is equally supported on both the Linux and Microsoft® Windows® XP operating systems.

It’s great that they are using standard C. Hopefully it means that one can create libraries in C for use in higher level languages (like python or Ruby). I expect that the interaction with OpenGL will be through NVIDIA OpenGL extensions. This interaction alleviates one of my immediate concerns when I read heard about CUDA: that the GPU may have to be “locked into” GPGPU mode. Thankfully, it doesn’t look like this is that case!

Via Reg Hardware.