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)[1]
  • Č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ů[2]
  • Ří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).[3]

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:

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

  1. http://news.microsoft.com/2000/11/09/microsoft-announces-release-of-directx-8-0/
  2. http://msdn.microsoft.com/en-us/library/windows/desktop/ff476342(v=vs.85).aspx#Full
  3. HACHMAN, Mark. AMD reveals high-end 'Carrizo' APU, the first chip to fully embrace audacious HSA tech. PCWorld.com [online]. 2014-11-21 [cit. 2015-11-17]. Dostupné online. (anglicky) 

Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/GPGPU
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.