Thursday 7 August 2014

                                                             What is a GPU??
            “A graphics processing unit (GPU) is a specialized electronic circuit designed to rapidly manipulate and alter memory to accelerate the building of images in a frame buffer intended for output to a display.”

Origins of GPUs
• As said before, GPUs were created to perform a specific task: real-time 3D rendering
– Before GPUs: the CPU had to perform all this
– Fun fact: MMX extensions (soon to be called SSE) appeared more or less at the same time
• Other extensions created over time include:
– IEEE-754 floating-point co-processors (early 1980s)
– Physics Processing Units (PPUs)
– Etc.General Processing

General Processing Using GPUs
• Started in early 2000s
– Diverted shader/vertex/etc. units within a GPU (e.g. instead of storing color information, use the 32-bit word to store an integer or floating-point value)
• While doable, programming was basically hell
– Needed to divert OpenGL commands to do your 
computation
– Not all computations can easily be mapped to triangles and/or polygons…
• Everything changed around 2006, with NVIDIA introducing GPUs which started to get more generic, including a C-based programming language (CUDA).

Features of Current GPUs
• Boards have their own memory. 
– Usually between 1 and 2 GB 
• can go up to 6 GB on high-end models
– Much faster than the processor’s memory.
– Higher bandwidth than the processor’s memory.
• Massive Parallelism
– GPUS support thousands of threads running at the same time.

Example of NVIDIA GPU
• NVIDIA GPU has 32,768 registers
– Divided into lanes
– Each SIMD thread is limited to 64 registers
– SIMD thread has up to:
• 64 vector registers of 32 32-bit elements
• 32 vector registers of 32 64-bit elements
– Fermi has 16 physical SIMD lanes, each containing 2048 registers.

References :
http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf.

No comments:

Post a Comment