Friday, September 18, 2009

CUDA and OpenCL

Parallel computing on a GPUs is undergoing two paradigm shifts: in the early days of GPU computing, GPUs where hard-wired for graphic rendering and the programming paradigm was to express generic operations in terms of rendering and texture mapping operations. In a first paradigm shift (since NVIDIA's G80), the hardware architecture has been changed to allow general parallel computations, embodied in CUDA. The upcoming paradigm shift is a new software architecture to allow scalability and portability, embodied in the OpenCL technology. These two disruptive changes will require different algorithms to achieve the aspirational goal of a performance improvement of two orders of magnitude over current implementations.