CUDA: Porovnání verzí

Smazaný obsah Přidaný obsah
Opraven odkaz na anglickou wikipedii - AMD FireStream
značka: možný spam
aktualizace, stylistika, doplnění, typografie + přidáno logo
Řádek 1:
{{Infobox - software
| jméno = CUDA
| logo = NVIDIA-CUDA.jpg
| velikost loga =
| obrázek =
Řádek 7:
| alt =
| popisek =
| vývojář = [[NVIDIA|nVIDIA]] Corp.
| aktuální verze = 8.0.51<ref>[http://www.nvidia.com/object/macosx-cuda-8.0.51-driver.html NVIDIA CUDA 8.0 for MAC OS X release] {{en}}</ref><br />
| aktuální verze = 7.5
| datum aktuální verze = [[září2. listopad]]u [[20152016]]
| připravovaná verze =
| datum připravované verze =
| operační systém = [[Microsoft Windows|MS Windows]],<br />[[OS X|Mac OS XmacOS]],<br />[[Linux|GNU/Linux]]
| programovací jazyk =
| typ softwaru = [[GPGPU]]
| licence = [[freeware]]
| lokalizace =
| web = [http://www.nvidia.com/object/cuda_home_new.html http://www.nvidia.com]
}}
 
'''CUDA''' ([[Akronym|akronym]] z&nbsp;[[Angličtina|angl.]] '''C'''ompute '''U'''nified '''D'''evice '''A'''rchitecture, výslovnost [ˈkjuːdə]) je hardwarová a softwarová architektura,<ref>{{Citace elektronické monografie
| titul = nVIDIA CUDA Programming Guide Version 1.1
| url = http://docs.nvidia.com/cuda/index.html#axzz3wagwJWX1
Řádek 26:
| datum přístupu = 2011-12-01
| vydavatel = nVIDIA
| jazyk = anglickyen
}}</ref>, která umožňuje na vybraných [[GPU]] spouštět programy napsané v&nbsp;jazycích [[C (programovací jazyk)|C]]/[[C++]], [[FORTRAN]] nebo programy postavené na technologiích [[OpenCL]], [[DirectCompute]] a jiných. TatoPoužití architekturatéto architektury je dostupnáomezeno pouze na [[Grafická karta|grafickýchgrafické akcelerátorechakcelerátory]] společnosti [[nVIDIA|nVIDIA]], která ji vyvinula. Konkurenční technologie společnosti [[Advanced Micro Devices|AMD]] se nazývá [httpshttp://en.wikipedia.org/wiki/AMD_FireStream AMD FireStream] (dříve Close To Metal). Obě společnosti jsou také členy [[Khronos Group]], která zajišťuje vývoj OpenCL.
 
== Historie ==
Technologii představila společnost nVIDIA v&nbsp;roce 2006. Následujícího roku bylo uvolněno [[Software development kit|SDK]] ve verzi 1.0 pro karty [[NVIDIA Tesla|nVIDIA Tesla]] založené na architektuře G80. Ještě v&nbsp;prosinci téhož roku vyšla verze CUDA SDK 1.1, která přidala podporu pro kartyGPU série [[GeForce#GeForce 8|GeForce 8]]. Se správným ovladačem grafické karty přibyla podpora pro překrývání paměťových přenosů výpočtem a podpora pro více GPU akcelerátorů.
 
V&nbsp; roce 2008 bylo vydáno současně s&nbsp;architekturou G200 SDK 2.0. Postupně s&nbsp;verzemi SDK 2.0 – 20–2.3 přibývala podpora pro emulovaný výpočet s&nbsp;[[double precision|dvojnásobnou přesností]] (double-precision) a podpora pro C++ šablony v&nbsp;rámci kernelu.
 
V&nbsp; roce 2010 jebylo v&nbsp;souvislostispolu s&nbsp;mikroarchitekturou Fermi vydáno SDK 3.0, kde je jižobsahující nativní podporapodporu pro výpočty s&nbsp;dvojnásobnou přesností, podporapodporu pro ukazatele na funkce a podporapodporu rekurze. Vylepšeny jsoubyly takétéž profilovací nástroje a [[Debugger|debuggery]] pro CUDA / OpenCL.
 
V&nbsp; květnu 2011 byla vydána verze CUDA SDK 4.0. Největší změnou je zde unifikace paměťových prostorů a masivní podpora [[Scalable Link Interface|MultiGPU]].
 
Nejnovější verzí je CUDA SDK 78.50 ze září roku 20152016.
 
== Mikroarchitektura GPU ==
[[Soubor:Cpu-gpu.svg|thumb|270px|CPU vs. GPU]]
Drtivou většinu plochy [[čip]]u grafického akcelerátoru od nVidie zabírá velké množství relativně jednoduchých [[Skalární procesor|skalárních procesorů]] (na rozdíl od architekturyarchitektur konkurenční firmy AMD, jejíž multiprocesoryGPU jsou tvořeny [[Very long instruction word|VLIW]] [[SIMD]], resp. [[RISC]] [[SIMD]] jednotkami, tzv. stream procesory), které jsou organizovány do větších celků zvaných [[Streaming multiprocesor|streaming multiprocesory]]. Vzhledem k&nbsp;tomu, že se jedná o &nbsp;[[Single Instruction Multiple Threads|SIMT]] architekturu, řízení jednotek a plánování instrukcí je jednoduché a spolu s&nbsp;velmi malou [[Cache|vyrovnávací pamětí]] zabírá malé procento plochy GPU čipu. To má bohužel za následek omezené predikce skoků a časté zdržení výpadky cache (některé typy pamětí dokonce nejsou opatřeny cache). Poslední významnou částí, která je rozměrově velice podobná CPU je [[RAM]] [[řadič]].
 
=== Struktura multiprocesoru ===
Řádek 49:
 
=== Výpočetní možnosti (Compute capability) ===
Výpočetní možnosti popisují vlastnosti zařízení a množinu instrukcí, které jsou podporovány. Některé z&nbsp;těchto vlastností jsou shrnuty v&nbsp;tabulce níže, ostatní lze nalézt v&nbsp;oddílu F nVIDIA CUDA C Programming Guide.<ref name="r-PG4">{{Citace elektronické monografie
| titul = nVIDIA CUDA C Programming GuideToolkit VersionDocumentation 4v8.0
| url = http://developer.downloaddocs.nvidia.com/compute/cuda/4_0/toolkit/docs/CUDA_C_Programming_Guideindex.pdfhtml#axzz4QZxUCmXI
| datum vydání = 20112016-0509-0627
| datum přístupu = 20112016-1211-0120
| vydavatel = nVIDIA
| jazyk = anglickyen
}} – neplatný odkaz !</ref>.
 
{| class="wikitable" style="text-align: center; margin: 0 auto;"
Řádek 143:
== Programovací model ==
[[Soubor:Block-thread.svg|thumb|270px|Uspořádání vláken a bloků]]
CUDA aplikace je složena z&nbsp;částí, které běží buď na hostuhost ([[Procesor|CPU]]) nebo na CUDA zařízení (GPU). Části aplikace běžící na zařízení jsou spouštěny hostem zavoláním [[CUDA Kernel|kernelu]], což je funkce, která je prováděna každým spuštěným [[Vlákno (program)|vláknem]] (''thread'').
 
; Blok (''thread block'') : Vlákna jsou organizována do 1D, 2D nebo 3D bloků, kde vlákna ve stejném bloku mohou sdílet data a lze synchronizovat jejich běh. Počet vláken na jeden blok je závislý na výpočetních možnostech zařízení. Každé vlákno je v&nbsp;rámci bloku identifikováno unikátním indexem přístupným ve spuštěném kernelu přes zabudovanou [[Proměnná|proměnou]] '''threadIdx'''.
Řádek 274:
 
== Spolupráce s OpenGL a Direct3D ==
Některé prvky [[OpenGL]] a [[Direct3D]] mohou být mapovány do adresního prostoru CUDA aplikace, což umožňuje výměnu dat bez nutnosti jejich přenosu do hlavní paměti. Pro spolupráci s&nbsp;s OpenGL lze mapovat OpenGL buffery, textury a renderbuffer objekty, pro spolupráci s&nbsp;Direct3D lze mapovat Direct3D buffery, textury a povrchy. Před samotným použitím v&nbsp;CUDA aplikaci je nutné nejprve prvek registrovat. Protože samotná registrace je výpočetně náročnou operací, je prováděna pouze jednou pro každý prvek. Registrované prvky lze poté podle potřeby přidávat a odebírat z&nbsp;adresního prostoru CUDA aplikace.
 
== Přehled nástrojů pro debugging a profiling ==
Řádek 280:
 
Profilovací nástroje:
* [httpshttp://developer.nvidia.com/nvidia-nsight-visual-studio-edition nVIDIA ParallelNVIDIA Nsight Visual Studio Edition]
* [httpshttp://developer.nvidia.com/nvidia-visual-profiler nVIDIA Visual Profiler]
* [http://www.cs.uoregon.edu/research/tau/home.php TAU Performance system]
* [httpshttp://www.vampir.eu Vampir 9.1 – Performace OptimiyationOptimization]
* [http://icl.cs.utk.edu/papi/index.html The PAPI CUDA Component]
 
Nástroje pro debugging:
* [http://developer.nvidia.com/nvidia-parallel-nsight-visual-studio-edition nVIDIA Parallel Nsight]
* [httpshttp://developer.nvidia.com/cuda-gdb CUDA-GDB]
* [httpshttp://developer.nvidia.com/CUDAcuda-MEMCHECKmemcheck CUDA-MEMCHECK]
* [http://www.roguewave.com/products-services/totalview/features/cuda-debugging TotalView]
* [http://www.allinea.com/products/ddt/ Allinea DDT]
 
== Reference ==