Changes

Jump to: navigation, search

GPU

417 bytes removed, 08:44, 8 August 2019
GPGPU
The traditional job of a GPU is to take the x,y,z coordinates of triangles, and map these triangles to screen-space through a matrix multiplication. As video game graphics grew more sophisticated, the number of triangles per scene grew larger. GPUs similarly grew in size to massively parallel behemoths capable of performing billions of transformations hundreds of times per second.
These lists of triangles (as well as their colors, textures, reflectivity, and other attributes), are were specified in a graphical language or API such as Graphics APIs like DirectX or OpenGL. But video game programmers demanded more flexibility from their hardware: such as lighting, transparency, and reflections, and particles. This flexibility was granted with full scale specialized programming languages, called vertex shaders or pixel shaders, where graphics programmers can customize the GPU pipelines of old.
Eventually, the fixed-functionality of GPUs disappeared, and GPUs became nothing more than primarily a massively parallel general purpose computers. Graphical languages, such as DirectX and OpenGL, still call these capabilities "Instead of using vertex shaders" or "pixel shaders" for historical purposes. But to properly abstract these general purpose capabilitiesinside of DirectX, modern GPGPU languages have been created. These general purpose compute languages all have the same goal: to expose the SIMD-style architecture are designed to the programmer as directly as possiblemake sense outside of a graphical setting.
== Khronos OpenCL ==
== NVidia Software overview ==
NVidia CUDA is their general purpose compute framework. CUDA has a C++ compiler based on LLVM / clang, which compiles into an assembly-like language called PTX. NVidia device drivers take PTX and compile that down to the final machine code (called NVidia SASS). NVidia keeps PTX portable between its GPUs, while its SASS assembly language may change from year-to-year as NVidia releases new GPUs. A defining feature of CUDA was the "single source" C++ compiler, the same compiler would work with both CPU host-code and GPU device-code. This meant that the data-structures and even pointers from the CPU can be shared directly with the GPU code.
* [https://developer.nvidia.com/cuda-zone NVidia CUDA Zone]

Navigation menu