CUDA (aka
Compute Unified Device Architecture) is a
parallel computing platform and programming model created by
NVIDIA and implemented by the
graphics processing units (GPUs) that they produce. CUDA gives developers access to the virtual
instruction set and memory of the parallel computational elements in CUDA GPUs. Using CUDA, the latest Nvidia GPUs become accessible for computation like
CPUs. Unlike CPUs, however, GPUs have a parallel throughput architecture that emphasizes executing many concurrent threads slowly, rather than executing a single thread very quickly. This approach of solving general-purpose (i.e., not exclusively graphics) problems on GPUs is known as
GPGPU.
The CUDA platform is accessible to software developers through
CUDA-accelerated libraries,
compiler directives (such as
OpenACC), and extensions to industry-standard programming languages, including
C,
C++ and
Fortran. C/C++ programmers use 'CUDA C/C++', compiled with "nvcc", NVIDIA's
LLVM-based C/C++ compiler, and Fortran programmers can use 'CUDA Fortran', compiled with the
PGI CUDA Fortran compiler from
The Portland Group.
In addition to libraries, compiler directives, CUDA C/C++ and CUDA Fortran, the CUDA platform supports other computational interfaces, including the
Khronos Group's
OpenCL, Microsoft's
DirectCompute, and C++ AMP. Third party wrappers are also available for
Python,
Perl,
Fortran,
Java,
Ruby,
Lua,
Haskell,
MATLAB,
IDL, and native support in
Mathematica.
In the
computer game industry, GPUs are used not only for graphics rendering but also in
game physics calculations (physical effects like debris, smoke, fire, fluids); examples include
PhysX and
Bullet. CUDA has also been used to accelerate non-graphical applications in
computational biology,
cryptography and other fields by an
order of magnitude or more.
CUDA provides both a low level
API and a higher level API. The initial CUDA
SDK was made public on 15 February 2007, for
Microsoft Windows and
Linux.
Mac OS X support was later added in version 2.0, which supersedes the beta released February 14, 2008. CUDA works with all Nvidia GPUs from the G8x series onwards, including
GeForce,
Quadro and the
Tesla line. CUDA is compatible with most standard operating systems. Nvidia states that programs developed for the G8x series will also work without modification on all future Nvidia video cards, due to binary compatibility.