GPU Architecture
GPU Architecture
• While the past GPUs were designed exclusively for computer graphics,
today they are being used extensively for general-purpose computing
(GPGPU computing) as well. In addition to graphical rendering, GPU-
driven parallel computing is used for scientific modelling, machine
learning, and other parallelization-prone jobs today.
GPU Programming APIs
• GPU understands computational problems in terms of graphical
primitives. Today there are several programming frameworks available
that operate these primitives for you under the hood, so you could
focus on the higher-level computing concepts.
CUDA
• Compute Unified Device Architecture (CUDA) is a parallel computing
platform and application programming interface (API) created by
Nvidia in 2006, that gives direct access to the GPU’s virtual instruction
set for the execution of compute kernels.
OpenCL
• While CUDA is a proprietary framework, OpenCL is an open standard
for parallel programming across heterogeneous platforms created by
the Khronos Group. OpenCL works with central processing units
(CPU), graphics processing units (GPU), digital signal processors, field-
programmable gate arrays (FPGA) and other processors or hardware
accelerators.
OpenACC
• OpenACC is a user-driven directive-based parallel programming
standard designed for scientists and engineers interested in porting
their codes to a wide variety of heterogeneous high-performance
computing (HPC) hardware platforms. The standard is designed for
the users by the users.