GPGPU
General-purpose computing on graphics processing units (zkratka GPGPU) je způsob využití paralelizace na grafické kartě, ale obecněji lze využít takřka každý procesor, jako je například CPU, GPU, APU a DSP, k výpočtu obecných algoritmů. GPU (což je grafický procesor či čip) dříve obsahovaly pouze jednoúčelový fixní vykreslovací řetězec, podobný výrobě na lince, který sloužil výhradně ke zpracování grafických primitiv a prezentaci na obrazovce. S příchodem programovatelných shaderů se však vyskytla možnost získat výstup operací prováděných grafickou kartou. Výpočty na grafické kartě jsou vhodné u algoritmů, které mají podobný formát jako grafická primitiva a obsahují mezi sebou minimální nebo žádné vazby (taková operace může být například převod pixelů barevného obrazu do šedotónového). S příchodem grafických čipů AMD GPU typu GCN a výše, může CPU a GPU či oboje v APU velice úzce spolupracovat, takže například jednotka GPU typu GCN si může od CPU přímo vyžádat data například z disku. Typicky konzole AMD, jako konzole osmé generace Playstation 4 a Xbox One, či konzole deváté generace Playstation 5 a Xbox Series X a Series S.

Historie a významná data 
 Listopad 2000: Direct3D 8.0 představil programovatelné shadery (vertex a pixel)
 Červenec 2002: OpenGL představila GLSL jako rozšíření v OpenGL 1.4
 Září 2004: OpenGL 2.0 přidala jazyk GLSL do svého jádra
 Červen 2007: Firma NVIDIA  představila svůj framework CUDA, sloužící výhradně k paralelním výpočtům na grafických kartách
 Červenec 2008: Direct3D 11.0 přidalo podporu compute shaderů
 Říjen 2009 – Apple představuje OpenCL, které později nahrazuje Close To Metal od AMD
 Srpen 2012: OpenGL 4.3 přidává do své specifikace compute shadery
 Září 2014: Apple představuje API Metal pro mobilní zařízení, které umožňuje využívat výkon grafické karty k obecným výpočtům
 Listopad 2014: AMD představuje Carizzo a Carizzo-L, první čipy podporující HSA (Heterogeneous System Architecture).

Princip 
Grafický procesor (GPU) má značně rozdílnou architekturu na rozdíl od klasického procesoru. CPU má rozsáhlou instrukční sadu uzpůsobenou k realizaci obecných výpočtů. Architektura grafického čipu byla na druhou stranu vyvíjena s myšlenkou realizace malého množství specifických instrukcí (operací nad grafickými primitivy) paralelně nad velkou homogenní datovou sadou. V kombinaci s dostupností programovatelného řetězce, jmenovitě vertex, fragment, geometry a compute shaderů, mohou být grafické karty použity k urychlení obecných, avšak ze své podstaty masivně paralelních algoritmů.

Pro programování algoritmů se používá konceptu takzvaného kernelu, který aplikuje operaci paralelně na každé primitivum vstupních dat (např. pixel obrazu) zvlášť. Ukázka jednoduchého kernelu (v jazyce GLSL), který převádí pixely barevného obrazu do šedotónové hloubky může vypadat například takto:

#version 430

// Vstupy a vystupy
uniform readonly image2D vstup;
uniform writeonly image2D vystup;

void main() {
    // Ziskame koordinaty pixelu, ktery zpracovavame
    ivec2 koordinaty = ivec2(gl_GlobalInvocationID.xy);

    // Nacteme pixel ze vstupu
    vec4 pixel = imageLoad(vstup, koordinaty);

    // Prevedeme pixel do stupni sedi
    pixel.rgb = 0.144 * pixel.r + 0.587 * pixel.g + 0.299 * pixel.b;

    // A zapiseme pixel na vystup
    imageStore(vystup, koordinaty, pixel);
}

Použití 
Na GPU lze při dostupnosti programovatelného řetězce implementovat jakýkoliv algoritmus, ovšem ne u každého takového algoritmu lze dosáhnout urychlení. Příklady vhodných aplikací pro urychlování na GPU mohou být algoritmy:
 Počítačového vidění (předzpracování, segmentace, počítačové učení)
 Fyzikální simulace (částicové simulace)
 Kryptografické (výpočty kontrolních součtů)

Softwarové knihovny 
Pro desktopové aplikace existují implementace otevřeného standardu OpenCL (spravován Khronos Group) a z používanějších také proprietární framework CUDA firmy NVIDIA. Pro vývoj na převažujících mobilních operačních systémech jsou dostupné knihovny Renderscript (pro OS Android) a Metal (pro iOS).

Související články 
 OpenGL – průmyslový standard specifikující multiplatformní rozhraní (API) pro tvorbu aplikací počítačové grafiky,
 WebGL – jako OpenGL, pro JavaScript,
 OpenAL – je audio standard,
 OpenCL – průmyslový standard specifikující multiplatformní rozhraní (API) pro tvorbu výpočetně náročných aplikací,
 GLUT – OpenGL Utility Toolkit,
 ALUT – OpenAL Utility Toolkit,
 DirectX – grafické API pro Microsoft Windows,
 Direct3D – součást DirectX.

Reference 

Nově vznikající technologie
Grafické karty