Univerzální výpočet na grafických procesorových jednotkách - General-purpose computing on graphics processing units
Univerzální výpočet na grafických procesorových jednotkách (GPGPU, zřídka GPGP) je použití a grafická jednotka (GPU), který obvykle zpracovává výpočty pouze pro počítačová grafika, provádět výpočty v aplikacích tradičně zpracovávaných centrální procesorová jednotka (PROCESOR).[1][2][3][4] Použití více grafické karty v jednom počítači nebo velkém počtu grafických čipů dále paralelizuje již paralelní povahu grafického zpracování.[5] Navíc dokonce i jediný rámec GPU-CPU poskytuje výhody, které více CPU samo o sobě nenabízí díky specializaci na každý čip.[6]
V podstatě GPGPU potrubí je druh paralelní zpracování mezi jedním nebo více GPU a CPU, které analyzují data, jako by byla v obraze nebo v jiné grafické podobě. Zatímco GPU pracují na nižších frekvencích, obvykle mají mnohonásobný počet jádra. GPU tedy mohou zpracovávat mnohem více obrázků a grafických dat za sekundu než tradiční CPU. Migrací dat do grafické podoby a následným skenováním a analýzou GPU lze vytvořit velké zrychlit.
Potrubí GPGPU byly vyvinuty na začátku 21. století pro grafické zpracování (např. k lepšímu shadery ). Bylo zjištěno, že tyto potrubí zapadají vědecké výpočty potřebuje dobře a od té doby byly vyvinuty tímto směrem.
Dějiny
V zásadě libovolné booleovská funkce, včetně funkcí sčítání, násobení a dalších matematických funkcí lze sestavit z a funkčně kompletní sada logických operátorů. V roce 1987 Conwayova hra o život se stal jedním z prvních příkladů všeobecného použití výpočetní techniky pomocí rané stream procesor volal a blitter vyvolat speciální sekvenci logické operace na bitových vektorech.[7]
Obecné použití na GPU se stalo praktičtějším a populárnějším přibližně po roce 2001, s příchodem obou programovatelných shadery a plovoucí bod podpora grafických procesorů. Zejména problémy spojené s matice a / nebo vektory - zejména dvourozměrné, trojrozměrné nebo čtyřrozměrné vektory - bylo snadné přeložit na GPU, který na tyto typy působí nativní rychlostí a podporou. Experimenty vědecké výpočetní komunity s novým hardwarem začaly a násobení matic rutina (2001); jedním z prvních společných vědeckých programů, které běžely rychleji na GPU než CPU, byla implementace Faktorizace LU (2005).[8]
Tyto rané snahy o použití GPU jako univerzálních procesorů vyžadovaly přeformulování výpočetních problémů, pokud jde o grafické primitivy, jak je podporováno dvěma hlavními API pro grafické procesory, OpenGL a DirectX. Tento těžkopádný překlad byl odstraněn příchodem univerzálních programovacích jazyků a API, jako jsou Sh /RapidMind, Potok a akcelerátor.[9][10]
Následovaly Nvidia CUDA, což programátorům umožnilo ignorovat základní grafické koncepty ve prospěch běžnějších vysoce výkonné výpočty koncepty.[8] Novější nabídky nezávislé na prodejcích hardwaru zahrnují nabídku společnosti Microsoft DirectCompute a skupiny Apple / Khronos Group OpenCL.[8] To znamená, že moderní kanály GPGPU mohou využívat rychlost GPU bez nutnosti úplného a explicitního převodu dat do grafické podoby.
Implementace
Libovolný jazyk, který umožňuje kódu běžícímu na CPU dotazovat GPU shader pro návratové hodnoty můžete vytvořit rámec GPGPU.
Od roku 2016[Aktualizace], OpenCL je dominantní otevřený obecný výpočetní jazyk GPU a je otevřeným standardem definovaným Skupina Khronos.[Citace je zapotřebí ] OpenCL poskytuje a napříč platformami Platforma GPGPU, která navíc podporuje paralelní výpočet dat na CPU. OpenCL je aktivně podporován na platformách Intel, AMD, Nvidia a ARM. Skupina Khronos také standardizovala a implementovala SYCL, programovací model vyšší úrovně pro OpenCL jako integrovaný jazyk pro jednu zdrojovou doménu založený na čistém C ++ 11.
Dominantní vlastnický rámec je Nvidia CUDA.[11] Nvidia spuštěna CUDA v roce 2006, a sada pro vývoj softwaru (SDK) a aplikační programovací rozhraní (API), který umožňuje použití programovacího jazyka C kódovat algoritmy pro spuštění na Řada GeForce 8 a novější GPU.
Programovací standardy pro paralelní výpočty zahrnují OpenCL (nezávislý na prodejci), Otevřít ACC, a OpenHMPP. Mark Harris, zakladatel GPGPU.org, vytvořil tento termín GPGPU.
The Xcelerit SDK,[12] vytvořil Xcelerit,[13] je navržen tak, aby urychlil existující velké C ++ nebo C# kódové základny GPU s minimálním úsilím. Poskytuje zjednodušený programovací model, automatizuje paralelizaci, spravuje zařízení a paměť a kompiluje CUDA binární soubory. Navíc vícejádrový CPU a další akcelerátory lze cílit ze stejného zdrojového kódu.
OpenVIDIA byla vyvinuta na University of Toronto v letech 2003–2005,[14] ve spolupráci s Nvidia.
Altimesh Hybridizer[15] vytvořil Altimesh[16] sestavuje Společný střední jazyk na CUDA binární soubory. Podporuje obecné a virtuální funkce.[17] Ladění a profilování je integrováno s Vizuální studio a Nsight.[18] Je k dispozici jako rozšíření Visual Studio na Visual Studio Marketplace.
Microsoft představil DirectCompute GPU výpočetní API, vydané s DirectX 11 API.
Alea GPU[19] vytvořil QuantAlea[20] zavádí nativní možnosti výpočtu GPU pro Windows 7 Microsoft Jazyk .NET F#[21] a C#. Alea GPU také poskytuje zjednodušený programovací model GPU založený na paralelním a paralelním agregování GPU pomocí delegátů a automatické správy paměti.[22]
MATLAB podporuje akceleraci GPGPU pomocí Sada nástrojů pro paralelní výpočty a Distribuovaný výpočetní server MATLAB,[23] a balíčky třetích stran jako Bunda.
K simulaci se také používá zpracování GPGPU Newtonovská fyzika podle fyzikální motory,[24] a komerční implementace zahrnují Havok Physics, FX a PhysX, které se obvykle používají pro počítač a videohry.
Blízko kovu, nyní volal Proud, je AMD Technologie GPGPU pro GPU založené na ATI Radeon.
C ++ zrychlený masivní paralelismus (C ++ AMP ) je knihovna, která zrychluje provádění C ++ kód využitím datově paralelního hardwaru na GPU.
Mobilní počítače
Vzhledem k trendu zvyšování výkonu mobilních GPU bylo univerzální programování dostupné také na hlavních mobilních zařízeních mobilní operační systémy.
Google Android 4.2 povolen běh RenderScript kód na GPU mobilního zařízení.[25] Jablko představil proprietární Kov API pro iOS aplikace schopné spouštět libovolný kód pomocí výpočetních shaderů GPU společnosti Apple.
Hardwarová podpora
Počítač grafické karty jsou vyráběny různými prodejci, jako např Nvidia, AMD, a ATI. Karty od těchto prodejců se liší při implementaci podpory datových formátů, například celé číslo a plovoucí bod formáty (32bitové a 64bitové). Microsoft představil a Shader Model standard, který pomáhá řadit různé funkce grafických karet do jednoduchého čísla verze modelu Shader (1.0, 2.0, 3.0 atd.).
Celočíselná čísla
Podporovány jsou pouze grafické karty Pre-DirectX 9 paletováno nebo celočíselné typy barev. K dispozici jsou různé formáty, každý obsahující červený prvek, zelený prvek a modrý prvek.[Citace je zapotřebí ] Někdy se přidá další alfa hodnota, která se použije pro průhlednost. Běžné formáty jsou:
- 8 bitů na pixel - někdy režim palety, kde každá hodnota je index v tabulce se skutečnou hodnotou barvy zadanou v jednom z ostatních formátů. Někdy tři bity pro červenou, tři bity pro zelenou a dvě bity pro modrou.
- 16 bitů na pixel - obvykle jsou bity přiděleny jako pět bitů pro červenou, šest bitů pro zelenou a pět bitů pro modrou.
- 24 bitů na pixel - pro každou červenou, zelenou a modrou je osm bitů.
- 32 bitů na pixel - K dispozici je osm bitů pro každou z červených, zelených, modrých a alfa.
Čísla s plovoucí desetinnou čárkou
Předčasně pevná funkce nebo grafika s omezenou programovatelností (tj. až do včetně GPU kompatibilních s DirectX 8.1) to stačilo, protože to je také reprezentace použitá na displejích. Je důležité si uvědomit, že toto znázornění má určitá omezení. Vzhledem k dostatečnému výkonu zpracování grafiky by i grafičtí programátoři chtěli používat lepší formáty, jako je plovoucí bod datové formáty, k získání efektů, jako je zobrazování s vysokým dynamickým rozsahem. Mnoho aplikací GPGPU vyžaduje přesnost s plovoucí desetinnou čárkou, která byla dodána s grafickými kartami vyhovujícími specifikaci DirectX 9.
DirectX 9 Shader Model 2.x navrhl podporu dvou typů přesnosti: úplné a částečné přesnosti. Podpora plné přesnosti může být buď FP32 nebo FP24 (s pohyblivou řádovou čárkou 32 nebo 24 bitů na komponentu) nebo vyšší, zatímco částečná přesnost byla FP16. ATI Radeon R300 řada GPU podporovala přesnost FP24 pouze v programovatelném potrubí fragmentu (ačkoli FP32 byl podporován ve vrcholných procesorech), zatímco Nvidia je NV30 série podporovala jak FP16, tak FP32; jiní prodejci jako např Grafika S3 a XGI podporoval kombinaci formátů až do FP24.
Implementace s plovoucí desetinnou čárkou na GPU Nvidia jsou většinou IEEE v souladu; to však není pravda u všech dodavatelů.[26] To má důsledky pro správnost, které jsou považovány za důležité pro některé vědecké aplikace. Zatímco 64bitové hodnoty s plovoucí desetinnou čárkou (float s dvojitou přesností) jsou běžně dostupné na procesorech, nejsou na GPU univerzálně podporovány. Některé architektury GPU obětují kompatibilitu s IEEE, zatímco jiným chybí dvojnásobná přesnost. Došlo k úsilí o emulaci hodnot s plovoucí desetinnou čárkou s dvojitou přesností na GPU; rychlostní kompromis však nejprve popírá jakoukoli výhodu spočívající v odlehčení výpočetní techniky na GPU.[27]
Vektorizace
Většina operací na GPU pracuje vektorizovaným způsobem: jednu operaci lze provést až se čtyřmi hodnotami najednou. Například pokud má být jedna barva
GPU vs. CPU
![]() | Tato sekce případně obsahuje původní výzkum.Února 2015) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Původně byla data jednoduše předávána jednosměrně z a centrální procesorová jednotka (CPU) na a grafická jednotka (GPU), poté na a zobrazovací zařízení. Postupem času se však stalo pro GPU cenným ukládat nejprve jednoduché, potom složité struktury dat, které se předávají zpět do CPU, které analyzovalo obraz, nebo sadu vědeckých dat představovaných jako 2D nebo 3D formát, který grafická karta může rozumět. Protože GPU má přístup ke každé čerpací operaci, může rychle analyzovat data v těchto formách, zatímco CPU musí dotazovat každý pixel nebo datový prvek mnohem pomaleji, protože rychlost přístupu mezi CPU a jeho větším fondem paměť s náhodným přístupem (nebo v ještě horším případě a pevný disk ) je pomalejší než GPU a grafické karty, které obvykle obsahují menší množství dražší paměti, ke které je mnohem rychlejší přístup. Přenos části datové sady, která má být aktivně analyzována, do této paměti GPU ve formě textur nebo jiných snadno čitelných formulářů GPU má za následek zvýšení rychlosti. Charakteristickým rysem designu GPGPU je schopnost přenášet informace obousměrně zpět z GPU na CPU; obecně je datová propustnost v obou směrech ideálně vysoká, což má za následek a násobitel vliv na rychlost konkrétního vysokého využití algoritmus. Potrubí GPGPU mohou zlepšit účinnost zejména u velkých datových sad a / nebo dat obsahujících 2D nebo 3D snímky. Používá se také ve složitých grafických kanálech vědecké výpočty; spíše v polích s velkými datovými sadami mapování genomu, nebo tam, kde je užitečná dvou- nebo trojrozměrná analýza - zejména v současnosti biomolekula analýza, protein studium a další komplex organická chemie. Taková potrubí mohou také výrazně zlepšit účinnost v zpracování obrazu a počítačové vidění, mimo jiné pole; stejně jako paralelní zpracování obvykle. Některé velmi silně optimalizované kanály přinesly zvýšení rychlosti několikanásobně oproti původnímu kanálu založenému na CPU na jednom vysoce používaném úkolu.
Jednoduchým příkladem může být program GPU, který shromažďuje údaje o průměru osvětlení hodnoty, protože vykresluje určitý pohled z kamery nebo počítačového grafického programu zpět do hlavního programu na CPU, takže CPU pak může provádět úpravy celkového zobrazení obrazovky. Může být použit pokročilejší příklad Detekce hrany vrátit číselné informace a zpracovaný obrázek představující obrysy do a počítačové vidění ovládání programu, řekněme, mobilního robota. Protože GPU má rychlý a místní hardwarový přístup ke každému pixel nebo jiný prvek obrázku v obrázku, může jej analyzovat a zprůměrovat (pro první příklad) nebo použít a Filtr okraje Sobel nebo jiný konvoluce filtr (pro druhý) s mnohem vyšší rychlostí než procesor, který obvykle musí přistupovat pomaleji paměť s náhodným přístupem kopie dotyčné grafiky.
GPGPU je v zásadě softwarový koncept, nikoli hardwarový koncept; je to typ algoritmus, není součástí vybavení. Specializované návrhy zařízení však mohou ještě více zvýšit účinnost potrubí GPGPU, které tradičně provádějí relativně málo algoritmů na velmi velkém množství dat. Mohutně paralelizované úkoly na úrovni gigantických dat lze tedy ještě více paralelizovat prostřednictvím specializovaných nastavení, jako je rack computing (mnoho podobných, vysoce přizpůsobených strojů zabudovaných do nosič), který přidává třetí vrstvu - mnoho výpočetních jednotek, z nichž každá používá mnoho procesorů, aby odpovídaly mnoha GPU. Nějaký Bitcoin „těžaři“ používali tato nastavení pro zpracování velkého množství.
Mezipaměti
Historicky CPU používaly hardware řízený mezipaměti, ale dřívější GPU poskytovaly pouze softwarově spravované místní paměti. Vzhledem k tomu, že se GPU stále častěji používají pro univerzální aplikace, navrhují se nejmodernější GPU s víceúrovňovými mezipaměťmi spravovanými hardwarem[28] které pomohly GPU přejít k mainstreamovým výpočtům. Například, Řada GeForce 200 Grafické procesory architektury GT200 neobsahovaly mezipaměť L2, Fermi GPU má mezipaměť poslední úrovně 768 KiB, Kepler GPU má mezipaměť poslední úrovně 1,5 MiB,[28][29] the Maxwell GPU má 2 mezipaměti poslední úrovně MiB a Pascal GPU má 4 MiB mezipaměti poslední úrovně.
Registrovat soubor
GPU mají velmi velké registrovat soubory, které jim umožňují snížit latenci při přepínání kontextu. Velikost souborů registrů se také zvyšuje v různých generacích GPU, např. Celková velikost souborů registrů na GPU Maxwell (GM200), Pascal a Volta je 6 MiB, 14 MiB a 20 MiB.[30][31][32] Pro srovnání, velikost a zaregistrujte soubor na CPU je malý, obvykle desítky nebo stovky kilobajtů.[30]
Energetická účinnost
Vysoký výkon GPU spočívá v ceně vysoké spotřeby energie, která při plném zatížení je ve skutečnosti tolik energie jako zbytek systému PC dohromady.[33] Maximální spotřeba energie GPU řady Pascal (Tesla P100) byla stanovena na 250 W.[34] Několik výzkumných projektů porovnávalo energetickou účinnost GPU s CPU a FPGA.[35]
Zpracování streamu
GPU jsou navrženy speciálně pro grafiku, a proto jsou velmi omezující při provozu a programování. Díky svému designu jsou GPU účinné pouze u problémů, které lze vyřešit pomocí zpracování proudu a hardware lze použít pouze určitými způsoby.
Následující diskuse týkající se vrcholů, fragmentů a textur se týká hlavně staršího modelu programování GPGPU, kde jsou grafická API (OpenGL nebo DirectX ) byly použity k provádění obecných výpočtů. Se zavedením CUDA (Nvidia, 2007) a OpenCL (nezávislý na prodejci, 2008) univerzální výpočetní API, v nových kódech GPGPU již není nutné mapovat výpočet na grafické primitivy. Povaha zpracování proudu GPU zůstává platná bez ohledu na použitá rozhraní API. (Viz např.[36])
GPU mohou zpracovávat pouze nezávislé vrcholy a fragmenty, ale mohou zpracovávat mnoho z nich paralelně. To je obzvláště efektivní, když programátor chce zpracovat mnoho vrcholů nebo fragmentů stejným způsobem. V tomto smyslu jsou GPU procesory streamů - procesory, které mohou pracovat paralelně spuštěním jednoho jádra na mnoha záznamech v proudu najednou.
A proud je jednoduše sada záznamů, které vyžadují podobné výpočty. Proudy poskytují paralelismus dat. Jádra jsou funkce, které se aplikují na každý prvek v proudu. V GPU vrcholy a fragmenty jsou prvky v proudech a vrcholy a shadery fragmentů jsou jádra, která se na nich mají spouštět.[pochybný ] Pro každý prvek můžeme číst pouze ze vstupu, provádět na něm operace a zapisovat na výstup. Je přípustné mít více vstupů a více výstupů, ale nikdy část paměti, která je čitelná i zapisovatelná.[vágní ]
Aritmetická intenzita je definována jako počet operací provedených na slovo přenesené paměti. Pro aplikace GPGPU je důležité mít vysokou aritmetickou intenzitu, jinak bude latence přístupu do paměti omezovat výpočetní zrychlení.[37]
Ideální aplikace GPGPU mají velké datové sady, vysokou paralelnost a minimální závislost mezi datovými prvky.
Koncepty programování GPU
Výpočetní zdroje
Na GPU je k dispozici celá řada výpočetních zdrojů:
- Programovatelné procesory - vrchol, primitivní, fragmentované a hlavně výpočetní kanály umožňují programátorovi provádět jádro na datových tocích
- Rasterizer - vytváří fragmenty a interpoluje perverzní konstanty, jako jsou souřadnice textury a barvy
- Texturní jednotka - paměťové rozhraní jen pro čtení
- Framebuffer - paměťové rozhraní pouze pro zápis
Ve skutečnosti může program nahradit texturu pouze pro zápis za výstup namísto framebufferu. To se provádí buď prostřednictvím Vykreslení na texturu (RTT), Render-To-Backbuffer-Copy-To-Texture (RTBCTT) nebo novější stream-out.
Textury jako stream
Nejběžnější formou streamu v GPGPU je 2D mřížka, protože to přirozeně zapadá do modelu vykreslování zabudovaného do GPU. Mnoho výpočtů se přirozeně mapuje do mřížek: maticová algebra, zpracování obrazu, fyzicky založená simulace atd.
Protože textury se používají jako paměť, vyhledávání textur se poté použije jako čtení paměti. Z tohoto důvodu může GPU provádět automaticky některé operace.
Jádra
Vypočítat jádra lze považovat za tělo smyčky. Například programátor pracující na mřížce na CPU může mít kód, který vypadá takto:
// Vstupní a výstupní mřížky mají 10 000 x 10 000 nebo 100 milionů prvků.prázdnota transform_10k_by_10k_grid(plovák v[10000][10000], plovák ven[10000][10000]){ pro (int X = 0; X < 10000; X++) { pro (int y = 0; y < 10000; y++) { // Další řádek je proveden 100 milionůkrát ven[X][y] = do_some_hard_work(v[X][y]); } }}
Na GPU programátor specifikuje pouze tělo smyčky jako jádro a jaká data k smyčce pomocí vyvolání zpracování geometrie.
Řízení toku
V sekvenčním kódu je možné řídit tok programu pomocí příkazů if-then-else a různých forem smyček. Takové struktury řízení toku byly do GPU přidány teprve nedávno.[38] Podmíněné zápisy lze provádět pomocí správně vytvořené řady aritmetických / bitových operací, ale opakování a podmíněné větvení nebylo možné.
Nedávné GPU umožňují větvení, ale obvykle s výkonnostní penalizací. Větvení by se obecně mělo zabránit ve vnitřních smyčkách, ať už v kódu CPU nebo GPU, a různých metodách, jako je statické rozlišení větví, předvýpočet, predikace, rozdělení smyčky,[39] a Z-vyřazeno[40] lze použít k dosažení větvení, když hardwarová podpora neexistuje.
Metody GPU
Mapa
Operace s mapou jednoduše použije danou funkci (jádro) na každý prvek v proudu. Jednoduchým příkladem je vynásobení každé hodnoty v proudu konstantou (zvýšení jasu obrazu). Provoz mapy je snadno implementovatelný na GPU. Programátor generuje fragment pro každý pixel na obrazovce a aplikuje fragmentový program na každý z nich. Výsledný proud stejné velikosti je uložen ve výstupní vyrovnávací paměti.
Snížit
Některé výpočty vyžadují výpočet menšího proudu (možná proudu pouze jednoho prvku) z většího proudu. Tomu se říká zmenšení proudu. Obecně lze redukci provést v několika krocích. Výsledky z předchozího kroku jsou použity jako vstup pro aktuální krok a rozsah, v němž je operace použita, se zmenšuje, dokud nezůstane pouze jeden prvek proudu.
Filtrování streamů
Filtrování proudu je v podstatě nejednotná redukce. Filtrování zahrnuje odebrání položek ze streamu na základě některých kritérií.
Skenovat
Skenovací operace, také nazývaná součet paralelních předpon, přijímá vektor (proud) datových prvků a (libovolná) asociativní binární funkce '+' s prvkem identity 'i'. Pokud je vstup [a0, a1, a2, a3, ...], an exkluzivní skenování produkuje výstup [i, a0, a0 + a1, a0 + a1 + a2, ...], zatímco včetně skenování produkuje výstup [a0, a0 + a1, a0 + a1 + a2, a0 + a1 + a2 + a3, ...] a nevyžaduje identitu existovat. I když se na první pohled může operace jevit jako neodmyslitelně sériová, jsou možné efektivní algoritmy paralelního skenování, které byly implementovány na jednotkách grafického zpracování. Operace skenování má využití například v rychlém třídění a řídkém násobení matice-vektoru.[36][41][42][43]
Rozptyl
The rozptyl operace je nejpřirozeněji definována na vrcholovém procesoru. Vrcholový procesor je schopen upravit polohu vrchol, což umožňuje programátorovi řídit, kde se informace ukládají na mřížku. Jsou možná i další rozšíření, například ovládání, jak velká plocha ovlivní vrchol.
Procesor fragmentu nemůže provést operaci přímého rozptylu, protože umístění každého fragmentu v mřížce je pevné v době vytvoření fragmentu a programátor jej nemůže změnit. Operace logického rozptylu však může být někdy přepracována nebo implementována pomocí jiného kroku shromažďování. Rozptylová implementace by nejprve emitovala jak výstupní hodnotu, tak výstupní adresu. Okamžitě následující operace shromažďování používá srovnání adres k zjištění, zda se výstupní hodnota mapuje na aktuální výstupní slot.
Ve vyhrazeném výpočetní jádra, rozptyl lze provést indexovanými zápisy.
Shromáždit
Shromáždit je opakem rozptylu. Poté, co scatter změní pořadí prvků podle mapy, shromáždění může obnovit pořadí prvků podle použitého scatteru mapy. Ve vyhrazených výpočetních jádrech může být shromažďování prováděno indexovaným čtením. V jiných shaderech se provádí vyhledáváním textur.
Třídit
Operace řazení transformuje neuspořádanou sadu prvků na uspořádanou sadu prvků. Nejběžnější implementace na GPU je použití radix sort pro celé číslo a data s plovoucí desetinnou čárkou a hrubozrnná Sloučit třídění a jemnozrnný třídění sítí pro obecné srovnatelné údaje.[44][45]
Vyhledávání
Vyhledávací operace umožňuje programátorovi najít daný prvek v proudu nebo případně najít sousedy zadaného prvku. GPU se nepoužívá k urychlení hledání jednotlivého prvku, ale místo toho se používá k paralelnímu spuštění více vyhledávání.[Citace je zapotřebí ]Většinou se používá metoda vyhledávání binární vyhledávání na tříděných prvcích.
Datové struktury
Na GPU lze reprezentovat různé datové struktury:
- Hustý pole
- Řídké matice (řídké pole ) - statické nebo dynamické
- Adaptivní struktury (typ spojení )
Aplikace
Níže jsou uvedeny některé z oblastí, kde se GPU používaly pro běžné výpočty:
- Automatická paralelizace[46][47][48]
- Počítačové klastry nebo varianta a paralelní výpočty (použitím GPU cluster technologie) pro úkoly náročné na výpočet:[Citace je zapotřebí ]
- Vysoce výkonná výpočetní technika (HPC) shluky, často nazývané superpočítače
- včetně klastrových technologií jako Rozhraní pro předávání zpráv, a obraz jednoho systému (SSI), distribuované výpočty, a Beowulf
- Grid computing (forma distribuovaného výpočtu) (síťování mnoho heterogenních počítačů k vytvoření architektury virtuálního počítače)
- Klastry pro vyrovnávání zatížení, někdy nazývané a serverová farma
- Vysoce výkonná výpočetní technika (HPC) shluky, často nazývané superpočítače
- Fyzická simulace a fyzikální motory[24] (obvykle na základě Newtonovská fyzika modely)
- Statistická fyzika
- Teorie mřížky[Citace je zapotřebí ]
- Segmentace - 2D a 3D[52]
- Metody nastavení úrovně
- CT rekonstrukce[53]
- Rychlá Fourierova transformace[54]
- GPU učení - strojové učení a dolování dat výpočty, např. se softwarem BIDMach
- Algoritmus k-nejbližšího souseda[55]
- Fuzzy logika[56]
- Mapování tónů
- Zpracování zvukového signálu[57]
- Zpracování zvukových a zvukových efektů, k použití a GPU pro zpracování digitálních signálů (DSP)
- Zpracování analogového signálu
- Zpracování řeči
- Digitální zpracování obrazu
- Zpracování videa[58]
- Hardwarově akcelerované dekódování videa a následné zpracování
- Kompenzace pohybu (mo comp)
- Inverzní diskrétní kosinová transformace (iDCT)
- Dekódování s proměnnou délkou (VLD), Huffmanovo kódování
- Inverzní kvantování (IQ (nezaměňovat inteligenční kvocient))
- Odblokování ve smyčce
- Zpracování bitového toku (CAVLC /CABAC ) používající pro tento úkol speciální hardware, protože se jedná o sériový úkol, který není vhodný pro běžné výpočty GPGPU
- Odstranění prokládání
- Prostorově-časové prokládání
- Redukce hluku
- Vylepšení hran
- Barevná korekce
- Hardwarově akcelerované kódování videa a předběžné zpracování
- Hardwarově akcelerované dekódování videa a následné zpracování
- Globální osvětlení – sledování paprsku, fotonové mapování, radiosita mezi ostatními, podpovrchový rozptyl
- Geometrické výpočty - konstruktivní objemová geometrie, vzdálenostní pole, Detekce kolize, výpočet průhlednosti, generování stínů
- Vědecké výpočty
- Bioinformatika[62][63]
- Výpočetní finance
- Lékařské zobrazování
- Systém podpory klinického rozhodování (CDSS)[64]
- Počítačové vidění[65]
- Zpracování digitálních signálů / zpracování signálu
- Řídicí technika[Citace je zapotřebí ]
- Operační výzkum[66][67][68]
- Neuronové sítě
- Databáze operace[71]
- Výpočetní dynamika tekutin zejména pomocí Lattice Boltzmann metody
- Kryptografie[72] a dešifrování
- Modelování výkonu: výpočetně náročné úkoly na GPU[60]
- Implementace: MD6, Advanced Encryption Standard (AES),[73][74] Standard šifrování dat (DES), RSA,[75] kryptografie eliptické křivky (ECC)
- Prolomení hesla[76][77]
- Kryptoměna zpracování transakcí („těžba“) (Těžba bitcoinů )
- Automatizace elektronického designu[78][79]
- Antivirový software[80][81]
- Detekce narušení[82][83]
- Zvyšte výpočetní výkon pro distribuované výpočty projekty jako SETI @ home, Einstein @ home
Bioinformatika
Využití GPGPU v bioinformatice:[60][84]
aplikace | Popis | Podporované funkce | Očekávané zrychlení † | GPU ‡ | Podpora více GPU | Stav vydání |
---|---|---|---|---|---|---|
BarraCUDA | DNA, včetně epigenetiky, software pro mapování sekvencí[85] | Zarovnání krátkých sekvenčních čtení | 6–10x | T 2075, 2090, K10, K20, K20X | Ano | Nyní dostupný, verze 0.7.107f |
CUDASW ++ | Software s otevřeným zdrojovým kódem pro vyhledávání proteinové databáze Smith-Waterman na GPU | Paralelní prohledávání databáze Smith-Waterman | 10–50x | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 2.0.8 |
CUSHAW | Parallelized short read aligner | Paralelní, přesný zarovnávač dlouhého čtení - zarovnání mezer na velké genomy | 10x | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 1.0.40 |
GPU-BLAST | Rychlé místní vyhledávání k-tuple heuristické | Zarovnání bílkovin podle blastp, více CPU vláken | 3–4x | T 2075, 2090, K10, K20, K20X | Pouze svobodný | Nyní k dispozici, verze 2.2.26 |
GPU-HMMER | Paralelizované místní a globální vyhledávání s profilovými skrytými Markovovými modely | Paralelní místní a globální vyhledávání skrytých Markovových modelů | 60–100x | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 2.3.2 |
mCUDA-MEME | Ultrarychlý škálovatelný algoritmus objevování motivů založený na MEME | Škálovatelný algoritmus objevování motivů založený na MEME | 4–10x | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 3.0.12 |
SeqNFind | Sada nástrojů pro analýzu sekvenční analýzy s akcelerací GPU | Referenční sestava, výbuch, Smith – Waterman, hmm, sestava de novo | 400x | T 2075, 2090, K10, K20, K20X | Ano | Nyní dostupný |
UGENE | Opensource Smith – Waterman pro SSE / CUDA, opakovací vyhledávač založený na příponovém poli a dotplot | Rychlé zarovnání krátkého čtení | 6–8x | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 1.11 |
WideLM | Hodí se k mnoha lineárním modelům s pevným designem a odezvou | Paralelní lineární regrese na několika podobně tvarovaných modelech | 150x | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 0.1-1 |
Molekulární dynamika
aplikace | Popis | Podporované funkce | Očekávané zrychlení † | GPU ‡ | Podpora více GPU | Stav vydání |
---|---|---|---|---|---|---|
Ušeň | Modely molekulární dynamiky biopolymerů pro simulace proteinů, DNA a ligandů | Výslovné a implicitní rozpouštědlo, hybridní Monte Carlo | 4–120x | T 2075, 2090, K10, K20, K20X | Pouze svobodný | Nyní k dispozici, verze 1.8.88 |
ACEMD | GPU simulace silových polí molekulární mechaniky, implicitní a explicitní rozpouštědlo | Napsáno pro použití na GPU | Pouze verze GPU 160 ns / den | T 2075, 2090, K10, K20, K20X | Ano | Nyní dostupný |
JANTAR | Sada programů pro simulaci molekulární dynamiky na biomolekule | PMEMD: explicitní a implicitní rozpouštědlo | 89,44 ns / den JAC NVE | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 12 + oprava chyby9 |
DL-POLY | Simulujte makromolekuly, polymery, iontové systémy atd. Na paralelním počítači s distribuovanou pamětí | Síly dvou těl, páry spojovacích buněk, síly Ewalda SPME, protřepe VV | 4x | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, pouze zdroj verze 4.0 |
CHARMM | Balíček MD pro simulaci molekulární dynamiky na biomolekule. | Implicitní (5x), explicitní (2x) rozpouštědlo prostřednictvím OpenMM | Bude upřesněno | T 2075, 2090, K10, K20, K20X | Ano | Ve vývoji Q4 / 12 |
GROMACS | Simulujte biochemické molekuly s komplexními interakcemi vazeb | Implicitní (5x), explicitní (2x) rozpouštědlo | 165 ns / den DHFR | T 2075, 2090, K10, K20, K20X | Pouze svobodný | Nyní k dispozici, verze 4.6 v Q4 / 12 |
HOOMD-modrá | Balíček dynamiky částic napsaný pro GPU | Napsáno pro GPU | 2x | T 2075, 2090, K10, K20, K20X | Ano | Nyní dostupný |
SVÍTILNY | Balíček klasické molekulární dynamiky | Lennard-Jones, Morse, Buckingham, CHARMM, tabelováno, SDK SDK, anizotropní Gay-Bern, RE-kvadrát, „hybridní“ kombinace | 3–18x | T 2075, 2090, K10, K20, K20X | Ano | Nyní dostupný |
NAMD | Navrženo pro vysoce výkonnou simulaci velkých molekulárních systémů | 100M schopný atomu | 6,44 ns / den STMV 585x 2050s | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 2.9 |
OpenMM | Knihovna a aplikace pro molekulární dynamiku pro HPC s GPU | Implicitní a explicitní rozpouštědlo, vlastní síly | Implicitní: 127–213 ns / den; Explicitní: 18–55 ns / den DHFR | T 2075, 2090, K10, K20, K20X | Ano | Nyní k dispozici, verze 4.1.1 |
† Očekávané zrychlení velmi závisí na konfiguraci systému. Výkon GPU ve srovnání s vícejádrovým procesorem x86 CPU. Výkon GPU srovnáván s funkcemi podporovanými GPU a může to být srovnání výkonu mezi jádry. Podrobnosti o použité konfiguraci najdete na webových stránkách aplikace. Zrychlení podle interního testování Nvidia nebo dokumentace ISV.
‡ Q =Quadro GPU, T =GPU Tesla. Nvidia doporučila pro tuto aplikaci GPU. Informace o certifikaci získáte u vývojáře nebo nezávislého výrobce softwaru.
Viz také
- Jednotka grafického zpracování
- OpenCL
- OpenMP
- Otevřít ACC
- OpenHMPP
- Fastra II
- Zpracování streamu
- Mark Harris (programátor)
- Fyzikální engine
- Blízko kovu
- C ++ AMP
- DirectCompute
- RenderScript
- Jednotka pro zpracování zvuku
- Larrabee (mikroarchitektura)
- Vypočítejte jádro
- Urychlovač AI
- Procesor hlubokého učení (DLP)
Reference
- ^ Fung a kol., „Zprostředkovaná realita pomocí hardwaru počítačové grafiky pro počítačové vidění“ Archivováno 2. dubna 2012 v Wayback Machine, Proceedings of the International Symposium on Wearable Computing 2002 (ISWC2002), Seattle, Washington, USA, 7. – 10. Října 2002, s. 83–89.
- ^ Video bezvýrazný odhad projektivního pohybu EyeTap na základě gyroskopického sledování pro přenosný počítač zprostředkovaná realita, ACM Personal and Ubiquitous Computing, publikováno Springer Verlag, Vol.7, Iss. 3, 2003.
- ^ „Zpracování signálu počítačového vidění na grafických jednotkách“, Sborník mezinárodní konference IEEE o akustice, řeči a zpracování signálu (ICASSP 2004) Archivováno 19. srpna 2011 v Wayback Machine: Montreal, Quebec, Kanada, 17. – 21. Května 2004, s. V-93 - V-96
- ^ Chitty, D. M. (2007, červenec). Datově paralelní přístup ke genetickému programování pomocí programovatelného grafického hardwaru Archivováno 8. srpna 2017 v Wayback Machine. In Sborník z 9. výroční konference o genetických a evolučních výpočtech (str. 1566-1573). ACM.
- ^ „Použití více grafických karet jako univerzálního paralelního počítače: aplikace pro počítačové vidění“, sborník ze 17. mezinárodní konference o rozpoznávání vzorů (ICPR2004) Archivováno 18. července 2011 v Wayback Machine, Cambridge, Velká Británie, 23. – 26. Srpna 2004, svazek 1, strany 805–808.
- ^ Mittal, S .; Vetter, J. (2015). „Průzkum heterogenních výpočetních technik CPU-GPU“. ACM Computing Surveys. 47 (4): 1–35. doi:10.1145/2788396. OSTI 1265534. S2CID 9436861.
- ^ Hull, Gerald (prosinec 1987). "ŽIVOT". Úžasné výpočty. 2 (12): 81–84.
- ^ A b C Du, Peng; Weber, Rick; Luszczek, Piotr; Tomov, Stanimire; Peterson, Gregory; Dongarra, Jacku (2012). „Od CUDA k OpenCL: Směrem k výkonně přenosnému řešení pro multiplatformní programování GPU“. Parallel Computing. 38 (8): 391–407. CiteSeerX 10.1.1.193.7712. doi:10.1016 / j.parco.2011.10.002.
- ^ Tarditi, David; Puri, Sidd; Oglesby, Jose (2006). „Akcelerátor: použití datového paralelismu k programování GPU pro všeobecné použití“ (PDF). Zprávy počítačové architektury ACM SIGARCH. 34 (5). doi:10.1145/1168919.1168898.
- ^ Che, Shuai; Boyer, Michael; Meng, Jiayuan; Tarjan, D .; Sheaffer, Jeremy W .; Skadron, Kevin (2008). "Studie výkonu univerzálních aplikací na grafických procesorech používajících CUDA". J. Paralelní a distribuované výpočty. 68 (10): 1370–1380. CiteSeerX 10.1.1.143.4849. doi:10.1016 / j.jpdc.2008.05.014.
- ^ „OpenCL získává půdu pod nohama na CUDA“. 28. února 2012. Archivováno z původního dne 23. dubna 2012. Citováno 10. dubna 2012. „Jako dva hlavní programovací rámce pro výpočet GPU soutěží OpenCL a CUDA v posledních několika letech o komunitu vývojářů.“
- ^ „Xcelerit SDK“. XceleritSDK. 26. října 2015. Archivováno z původního dne 8. března 2018.
- ^ "Domovská stránka". Xcelerit. Archivováno z původního dne 8. března 2018.
- ^ James Fung, Steve Mann, Chris Aimone, "OpenVIDIA: Parallel GPU Computer Vision “, Proceedings of the ACM Multimedia 2005, Singapore, 6. – 11. Listopadu 2005, strany 849–852
- ^ „Hybridizér“. Hybridizér. Archivováno z původního dne 17. října 2017.
- ^ "Domovská stránka". Altimesh. Archivováno z původního dne 17. října 2017.
- ^ „Generics a dědičnost hybridizátoru“. 27. července 2017. Archivováno z původního dne 17. října 2017.
- ^ „Ladění a profilování s hybridizátorem“. 5. června 2017. Archivováno z původního dne 17. října 2017.
- ^ "Úvod". Alea GPU. Archivováno z původního dne 25. prosince 2016. Citováno 15. prosince 2016.
- ^ "Domovská stránka". Quant Alea. Archivováno z původního dne 12. prosince 2016. Citováno 15. prosince 2016.
- ^ „Use F # for GPU Programming“. F # softwarová nadace. Archivovány od originál dne 18. prosince 2016. Citováno 15. prosince 2016.
- ^ „Alea GPU Features“. Quant Alea. Archivováno z původního dne 21. prosince 2016. Citováno 15. prosince 2016.
- ^ „MATLAB přidává podporu GPGPU“. 20. září 2010. Archivovány od originál dne 27. září 2010.
- ^ A b Joselli, Mark a kol. "Nový fyzikální engine s automatickou distribucí procesů mezi CPU-GPU "Sborník sympozia ACM SIGGRAPH z roku 2008 o videohrách. ACM, 2008.
- ^ „Android 4.2 API - Android Developers“. developer.android.com. Archivováno z původního dne 26. srpna 2013.
- ^ Mapování výpočetních konceptů na GPU: Mark Harris. Mapování výpočetních konceptů na GPU. V kurzech ACM SIGGRAPH 2005 (Los Angeles, Kalifornie, 31. července - 4. srpna 2005). J. Fujii, vyd. SIGGRAPH '05. ACM Press, New York, NY, 50.
- ^ Dvojitá přesnost na GPU (Sborník ASIM 2005) Archivováno 21. srpna 2014 v Wayback Machine: Dominik Goddeke, Robert Strzodka a Stefan Turek. Urychlení simulací dvojí přesnosti (FEM) pomocí (GPU). Proceedings of ASIM 2005 - 18th Symposium on Simulation Technique, 2005.
- ^ A b "Průzkum technik pro správu a využití mezipaměti v GPU Archivováno 16. února 2015 v Wayback Machine ", S. Mittal, JCSC, 23 (8), 2014.
- ^ „Nvidia-Kepler-GK110-Architecture-Whitepaper“ (PDF). Archivováno (PDF) z původního dne 21. února 2015.
- ^ A b "Průzkum technik pro vytváření a správu registračních souborů GPU Archivováno 26. března 2016 v Wayback Machine ", IEEE TPDS, 2016
- ^ "Inside Pascal: Nejnovější výpočetní platforma Nvidia Archivováno 7. května 2017 v Wayback Machine "
- ^ "Inside Volta: Nejpokročilejší GPU datového centra na světě Archivováno 1. Ledna 2020 v Wayback Machine "
- ^ "https://www.tomshardware.com/reviews/geforce-radeon-power,2122.html Kolik energie potřebuje vaše grafická karta? "
- ^ "https://images.nvidia.com/content/tesla/pdf/nvidia-tesla-p100-PCIe-datasheet.pdf Akcelerátor GPU Nvidia Tesla P100 Archivováno 24. července 2018 v Wayback Machine "
- ^ "Průzkum metod pro analýzu a zlepšení energetické účinnosti GPU Archivováno 4. září 2015 v Wayback Machine ", Mittal et al., ACM Computing Surveys, 2014.
- ^ A b "D. Göddeke, 2010. Rychlá a přesná řešení s více mřížkami s využitím konečných prvků pro simulace PDE v klastrech GPU. Ph.D. disertační práce, Technischen Universität Dortmund". Archivováno z původního dne 16. prosince 2014.
- ^ Asanovic, K .; Bodik, R .; Demmel, J.; Keaveny, T .; Keutzer, K .; Kubiatowicz, J .; Morgan, N .; Patterson, D .; Sen, K .; Wawrzynek, J .; Wessel, D .; Yelick, K. (2009). "A view of the parallel computing landscape". Commun. ACM. 52 (10): 56–67. doi:10.1145/1562764.1562783.
- ^ "GPU Gems – Chapter 34, GPU Flow-Control Idioms".
- ^ Future Chips. "Tutorial on removing branches", 2011
- ^ GPGPU survey paper Archivováno 4. Ledna 2007 v Wayback Machine: John D. Owens, David Luebke, Naga Govindaraju, Mark Harris, Jens Krüger, Aaron E. Lefohn, and Tim Purcell. "A Survey of General-Purpose Computation on Graphics Hardware". Computer Graphics Forum, volume 26, number 1, 2007, pp. 80–113.
- ^ "S. Sengupta, M. Harris, Y. Zhang, J. D. Owens, 2007. Scan primitives for GPU computing. In T. Aila and M. Segal (eds.): Graphics Hardware (2007)". Archivovány od originál on 5 June 2015. Citováno 16. prosince 2014.
- ^ Blelloch, G. E. (1989). "Scans as primitive parallel operations" (PDF). IEEE Transactions on Computers. 38 (11): 1526–1538. doi:10.1109/12.42122. Archivovány od originál (PDF) dne 23. září 2015. Citováno 16. prosince 2014.
- ^ "M. Harris, S. Sengupta, J. D. Owens. Parallel Prefix Sum (Scan) with CUDA. In Nvidia: GPU Gems 3, Chapter 39".[trvalý mrtvý odkaz ]
- ^ Merrill, Duane. Allocation-oriented Algorithm Design with Application to GPU Computing. Ph.D. dissertation, Department of Computer Science, University of Virginia. Prosinec 2011.
- ^ Sean Baxter. Modern gpu Archivováno 7. října 2016 v Wayback Machine, 2013.
- ^ Leung, Alan, Ondřej Lhoták, and Ghulam Lashari. "Automatic parallelization for graphics processing units." Proceedings of the 7th International Conference on Principles and Practice of Programming in Java. ACM, 2009.
- ^ Henriksen, Troels, Martin Elsman, and Cosmin E. Oancea. "Size slicing: a hybrid approach to size inference in futhark." Proceedings of the 3rd ACM SIGPLAN workshop on Functional high-performance computing. ACM, 2014.
- ^ Baskaran, Muthu Manikandan, et al. "A compiler framework for optimization of affine loop nests for GPGPUs." Proceedings of the 22nd annual international conference on Supercomputing. ACM, 2008.
- ^ "K. Crane, I. Llamas, S. Tariq, 2008. Real-Time Simulation and Rendering of 3D Fluids. In Nvidia: GPU Gems 3, Chapter 30".[trvalý mrtvý odkaz ]
- ^ "M. Harris, 2004. Fast Fluid Dynamics Simulation on the GPU. In Nvidia: GPU Gems, Chapter 38". Archivováno from the original on 7 October 2017.
- ^ Block, Benjamin, Peter Virnau, and Tobias Preis. "Multi-GPU accelerated multi-spin Monte Carlo simulations of the 2D Ising model." Computer Physics Communications 181.9 (2010): 1549-1556.
- ^ Sun, Shanhui, Christian Bauer, and Reinhard Beichel. "Automated 3-D segmentation of lungs with lung cancer in CT data using a novel robust active shape model approach." IEEE transactions on medical imaging 31.2 (2011): 449-460.
- ^ Jimenez, Edward S., and Laurel J. Orr. "Rethinking the union of computed tomography reconstruction and GPGPU computing." Penetrating Radiation Systems and Applications XIV. Vol. 8854. International Society for Optics and Photonics, 2013.
- ^ Sørensen, Thomas Sangild, et al. "Accelerating the nonequispaced fast Fourier transform on commodity graphics hardware." IEEE Transactions on Medical Imaging 27.4 (2008): 538-547.
- ^ Rychle k-nearest neighbor search using GPU. In Proceedings of the CVPR Workshop on Computer Vision on GPU, Anchorage, Alaska, USA, June 2008. V. Garcia and E. Debreuve and M. Barlaud.
- ^ M. Cococcioni, R. Grasso, M. Rixen, Rychlé prototypování vysoce výkonných fuzzy výpočetních aplikací pomocí programování GPU na vysoké úrovni pro podporu námořních operací, in Proceedings of the 2011 IEEE Symposium on Computational Intelligence for Security and Defense Applications (CISDA), Paris, 11–15 April 2011
- ^ Whalen, Sean. "Audio and the graphics processing unit." Author report, University of California Davis 47 (2005): 51.
- ^ Wilson, Ron (3 September 2009). "DSP brings you a high-definition moon walk". EDN. Archivovány od originál dne 22. ledna 2013. Citováno 3. září 2009.
Lowry is reportedly using Nvidia Tesla GPUs (graphics-processing units) programmed in the company's CUDA (Compute Unified Device Architecture) to implement the algorithms. Nvidia claims that the GPUs are approximately two orders of magnitude faster than CPU computations, reducing the processing time to less than one minute per frame.
- ^ Alerstam, E.; Svensson, T.; Andersson-Engels, S. (2008). "Parallel computing with graphics processing units for high speed Monte Carlo simulation of photon migration" (PDF). Journal of Biomedical Optics. 13 (6): 060504. Bibcode:2008JBO....13f0504A. doi:10.1117/1.3041496. PMID 19123645. Archivováno (PDF) from the original on 9 August 2011.
- ^ A b C Hasan, Khondker S.; Chatterjee, Amlan; Radhakrishnan, Sridhar; Antonio, John K. (2014). "Performance Prediction Model and Analysis for Compute-Intensive Tasks on GPUs" (PDF). Pokročilé inženýrství informačních systémů (PDF). Přednášky z informatiky. 7908. pp. 612–617. doi:10.1007/978-3-662-44917-2_65. ISBN 978-3-642-38708-1.
- ^ "Computational Physics with GPUs: Lund Observatory". www.astro.lu.se. Archivováno from the original on 12 July 2010.
- ^ Schatz, Michael C; Trapnell, Cole; Delcher, Arthur L; Varshney, Amitabh (2007). "High-throughput sequence alignment using Graphics Processing Units". BMC bioinformatika. 8: 474. doi:10.1186/1471-2105-8-474. PMC 2222658. PMID 18070356.
- ^ Olejnik, M; Steuwer, M; Gorlatch, S; Heider, D (15 November 2014). "gCUP: rapid GPU-based HIV-1 co-receptor usage prediction for next-generation sequencing". Bioinformatika. 30 (22): 3272–3. doi:10.1093/bioinformatics/btu535. PMID 25123901.
- ^ Wang, Guohui, et al. "Accelerating computer vision algorithms using OpenCL framework on the mobile GPU-a case study." 2013 IEEE International Conference on Acoustics, Speech and Signal Processing. IEEE, 2013.
- ^ GPU computing in OR Archivováno 13. ledna 2015 v Wayback Machine Vincent Boyer, Didier El Baz. "Recent Advances on GPU Computing in Operations Research". Parallel and Distributed Processing Symposium Workshops & PhD Forum (IPDPSW), 2013 IEEE 27th International, on pages: 1778–1787
- ^ Bukata, Libor; Sucha, Premysl; Hanzalek, Zdenek (2014). "Solving the Resource Constrained Project Scheduling Problem using the parallel Tabu Search designed for the CUDA platform". Journal of Parallel and Distributed Computing. 77: 58–68. arXiv:1711.04556. doi:10.1016/j.jpdc.2014.11.005. S2CID 206391585.
- ^ Bäumelt, Zdeněk; Dvořák, Jan; Šůcha, Přemysl; Hanzálek, Zdeněk (2016). "A Novel Approach for Nurse Rerostering based on a Parallel Algorithm". Evropský žurnál operačního výzkumu. 251 (2): 624–639. doi:10.1016/j.ejor.2015.11.022.
- ^ CTU-IIG Archivováno 9 January 2016 at the Wayback Machine Czech Technical University in Prague, Industrial Informatics Group (2015).
- ^ NRRPGpu Archivováno 9 January 2016 at the Wayback Machine Czech Technical University in Prague, Industrial Informatics Group (2015).
- ^ Naju Mancheril. "GPU-based Sorting in PostgreSQL" (PDF). School of Computer Science – Carnegie Mellon University. Archivováno (PDF) from the original on 2 August 2011.
- ^ Manavski, Svetlin A. "CUDA compatible GPU as an efficient hardware accelerator for AES cryptography." 2007 IEEE International Conference on Signal Processing and Communications. IEEE, 2007.
- ^ Harrison, Owen; Waldron, John (2007). "AES Encryption Implementation and Analysis on Commodity Graphics Processing Units". Cryptographic Hardware and Embedded Systems - CHES 2007. Přednášky z informatiky. 4727. p. 209. CiteSeerX 10.1.1.149.7643. doi:10.1007/978-3-540-74735-2_15. ISBN 978-3-540-74734-5.
- ^ AES and modes of operations on SM4.0 compliant GPUs. Archivováno 21 August 2010 at the Wayback Machine Owen Harrison, John Waldron, Practical Symmetric Key Cryptography on Modern Graphics Hardware. In proceedings of USENIX Security 2008.
- ^ Harrison, Owen; Waldron, John (2009). "Efficient Acceleration of Asymmetric Cryptography on Graphics Hardware". Progress in Cryptology – AFRICACRYPT 2009. Přednášky z informatiky. 5580. p. 350. CiteSeerX 10.1.1.155.5448. doi:10.1007/978-3-642-02384-2_22. ISBN 978-3-642-02383-5.
- ^ "Teraflop Troubles: The Power of Graphics Processing Units May Threaten the World's Password Security System". Georgia Tech Research Institute. Archivovány od originál dne 30. prosince 2010. Citováno 7. listopadu 2010.
- ^ "Want to deter hackers? Make your password longer". Zprávy NBC. 19. srpna 2010. Citováno 7. listopadu 2010.
- ^ Lerner, Larry (9 April 2009). "Viewpoint: Mass GPUs, not CPUs for EDA simulations". EE Times. Citováno 3. května 2009.
- ^ "W2500 ADS Transient Convolution GT".
accelerates signal integrity simulations on workstations that have Nvidia Compute Unified Device Architecture (CUDA)-based Graphics Processing Units (GPU)
- ^ GrAVity: A Massively Parallel Antivirus Engine Archivováno 27. července 2010 v Wayback Machine. Giorgos Vasiliadis and Sotiris Ioannidis, GrAVity: A Massively Parallel Antivirus Engine. In proceedings of RAID 2010.
- ^ "Kaspersky Lab utilizes Nvidia technologies to enhance protection". Kaspersky Lab. 14 December 2009. Archivováno from the original on 19 June 2010.
During internal testing, the Tesla S1070 demonstrated a 360-fold increase in the speed of the similarity-defining algorithm when compared to the popular Intel Core 2 Duo central processor running at a clock speed of 2.6 GHz.
- ^ Gnort: High Performance Network Intrusion Detection Using Graphics Processors Archivováno 9. Dubna 2011 v Wayback Machine. Giorgos Vasiliadis et al., Gnort: High Performance Network Intrusion Detection Using Graphics Processors. In proceedings of RAID 2008.
- ^ Regular Expression Matching on Graphics Hardware for Intrusion Detection Archivováno 27. července 2010 v Wayback Machine. Giorgos Vasiliadis et al., Regular Expression Matching on Graphics Hardware for Intrusion Detection. In proceedings of RAID 2009.
- ^ „Archivovaná kopie“ (PDF). Archivováno (PDF) z původního dne 25. března 2013. Citováno 12. září 2013.CS1 maint: archivovaná kopie jako titul (odkaz)
- ^ Langdon, William B; Lam, Brian Yee Hong; Petke, Justyna; Harman, Mark (2015). "Improving CUDA DNA Analysis Software with Genetic Programming". Proceedings of the 2015 on Genetic and Evolutionary Computation Conference - GECCO '15. pp. 1063–1070. doi:10.1145/2739480.2754652. ISBN 9781450334723. S2CID 8992769.
externí odkazy
- openhmpp.org – New Open Standard for Many-Core
- OCLTools Open Source OpenCL Compiler and Linker
- GPGPU.org – General-Purpose Computation Using Graphics Hardware
- GPGPU Wiki
- SIGGRAPH 2005 GPGPU Course Notes
- IEEE VIS 2005 GPGPU Course Notes
- Nvidia Developer Zone
- AMD GPU Tools
- CPU vs. GPGPU
- What is GPU Computing?
- Tech Report article: "ATI stakes claims on physics, GPGPU ground" by Scott Wasson
- Preis, Tobias; Virnau, Peter; Paul, Wolfgang; Schneider, Johannes J (2009). "GPU accelerated Monte Carlo simulation of the 2D and 3D Ising model". Journal of Computational Physics. 228 (12): 4468. Bibcode:2009JCoPh.228.4468P. doi:10.1016/j.jcp.2009.03.018.
- GPGPU Computing @ Duke Statistical Science
- GPGPU Programming in F# using the Microsoft Research Accelerator system