CUDA C/C++ programozás Egyéb eszköztárak vegyesen A segédanyag készítése a TÁMOP 4.2.4.A/2-11-1-2012-0001 Nemzeti Kiválóság Program című kiemelt projekt.

Slides:



Advertisements
Hasonló előadás
Az információ átviteli eljárásai és azok gyakorlata
Advertisements

1 Számítógépek felépítése 9. előadás I/O rendszerek.
Memóriák típusai, jellemzői
CUDA.
3. A programozás eszközei, programozás-technikai alapismeretek
Funkcionális programozás F#-ban
 Adat- és feladat párhuzamos modell  Az ISO C99 szabvány részhalmaza  párhuzamos kiegészítésekkel  Numerikus műveletek az IEEE754 alapján  Beágyazott.
 CUDA mint architektúra  Párhuzamos feldolgozásra optimalizált architektúra  CUDA mint GPGPU keretrendszer  Runtime és Driver API  CUDA C/C++  NVCC.
Belső memóriák tipusai
Szoftevrismeret Operációs rendszerek.
Nagy Gábor MF01-M2.
Bevezetés a Java programozásba
Ez a dokumentum az Európai Unió pénzügyi támogatásával valósult meg. A dokumentum tartalmáért teljes mértékben Szegedi Tudományegyetem vállalja a felelősséget,
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Neumann elvek.
Az operációs rendszerek
CISC - RISC processzor jellemzők
A memória.
ISZAM III.évf. részére Bunkóczi László
A mikrovezérlők világa
1 Operációs rendszerek Az NT folyamatok kezelése.
1 Operációs rendszerek Signal kezelés. 2 SIGNAL kezelés Egyszerű folyamatok közötti kommunikációs (IPC – Inter Process Communication) megoldás. A signal.
A számítógép működése TAKÁCS BÉLA
Miben hasonlítanak egymásra a mai és az ötvenes évek számítógépei? Takács Béla Melyek a közös tulajdonságaik ?
Miben hasonlítanak egymásra a mai és az ötvenes évek számítógépei? Takács Béla Melyek a közös tulajdonságaik ?
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
A számítógép alapegységei. A számítógép a belsőleg tárolt program segítségével automatikusan hajtja végre a programokat. A memória utasítások és adatok.
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósul meg Nemzetközi és határ menti együttműködések támogatása.
A legolcsóbb szuperszámitógép
A számítógép elvi felépítése
Visual Basic 2008 Express Edition
GPGPU A grafikus hardver általános célú felhasználása
A Neumann-elvek 3. ÓRA.
A Neumann-elvű gépek A Neumann elvek:
CUDA C/C++ programozás Textúra memória A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Az algoritmuskészítés alapjai
CUDA C/C++ programozás Szál struktúra A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
CUDA C/C++ programozás
CUDA C/C++ programozás GPU tulajdonságainak lekérdezése A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt.
Mikroprocesszor.
CUDA C/C++ programozás Atomikus műveletek A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
C Programozási alapok.
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
2012. március 21. Paulik Áron.  Ha a függvényünk feladata olyan, hogy nem lenne értelme a visszatérési értéknek, vagy csak nincs rá szükség, void típusúként.
DLL használata és készítése Feladat
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. Számítógép- hálózatok dr. Herdon Miklós dr. Kovács György Magó Zsolt.
ifin811/ea1 C Programozás: Hardver alapok áttekintése
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
BIOLÓGUS INFORMATIKA 2008 – 2009 (1. évfolyam/1.félév) 6.
1 Számítógépek felépítése 5. előadás a CPU gyorsítása, pipeline, cache Dr. Istenes Zoltán ELTE-TTK.
PIC mikrokontroller.
Informatikai gyakorlatok 11. évfolyam
Modellek a számítógép megismeréshez Takács Béla
1 A számítógépek tárolói. 2 Memória Memóriaszó  A tárak olyan egységei, melyek egyetlen művelettel kezelhetők.  A legrövidebb memóriaszó a byte (bájt)
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
GPGPU – CUDA 1..
RAM (Random Access Memory)
Párhuzamos programozás
Informatikai gyakorlatok 11. évfolyam
Programozási alapismeretek
Programozási nyelvek típusossága.
ÁROP /C/A A komplex programmal segítendő leghátrányosabb
Beépített függvények használata programozáskor
GPGPU – CUDA 2..
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
I. Generációs számítógépek
CUDA – OpenGL.
Számítógépek felépítése 9. előadás I/O rendszerek
Előadás másolata:

CUDA C/C++ programozás Egyéb eszköztárak vegyesen A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében zajlott. A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósul meg.

Ami eddig kimaradt  Események  Sztream-ek  Fejlett memóriakezelés  Több GPU használata  Egyéb CUDA eszközök

Események  A CUDA programokban létrehozhatunk eseményeket.  Az kód adott pontján lehet rögzíteni őket.  A kódban szinkronizációs pontok tehetők, amik megvárják az egyes események bekövetkezését.  Időbélyegzővel ellátottak.  Kiválóan használhatóak:  Szinkronizációra,  Időmérésre

Események kezelése  Deklarálás:  cudaEvent_t típusú adattaggal.  Létrehozás:  cudaError_t cudaEventCreate (cudaEvent_t* event )  Rögzítés:  cudaError_t cudaEventRecord (cudaEvent_t event, cudaStream_t stream = 0 )  Egyéb (időmérés):  cudaError_t cudaEventElapsedTime (float* ms, cudaEvent_t start, cudaEvent_t end )  Megszűntetés:  cudaError_t cudaEventDestroy (cudaEvent_t event )  Esemény bevárása:  cudaError_t cudaEventSynchronize ( cudaEvent_t event )

Példa eseményhasználatára  Kernel futási idejének mérese: //... int main(...) { cudaEvent_t start, stop; float ellapsedTime; cudaEventCreate(&start); cudaEventCreate(&stop); //... cudaEventRecord(start, 0); kernel >>(... ); cudaEventRecord(stop, 0); cudaEventSynchronize(stop) cudaEllapsedTime(&ellapsedTime, start, stop); //... }

Page-locked-, Mapped- memory  A CUDA a központi memória kezeléséhez is ad extra eszközöket a cudaHostAlloc függvénnyel.  „Page-locked” memória.  Nem lapozható memóriaterület a központi memóriába.  Nem kerül ki a háttértárra, ezért nem kell várni az elérésekkor.  A GPU nem vár a lapozásra  „Mapped” (zero-copy) memória:  A központi memóriában található nem lapozható memória.  A GPU kernel közvetlenül is képes elérni (olvasni/írni)  Gyorsítja a programot, ha egy adatra csak egyszer van szükség.  (Illetve, ha a GPU-nak nincs dedikált memóriája)

CUDA stream-ek  Egyes GPU-k képesek aszinkron módon párhuzamosan futtatni egy kernelt, és egy, vagy több memóriamozgató műveletet végezni.  „Device Overlap” paraméter.  A programok működését felgyorsíthatjuk, ha párhuzamosíthatunk bizonyos műveleteket.  Ennek a kihasználásához CUDA stream-ek definiálhatóak.  Egymástól független utasítás sorozatok sorok.  Átlapolva működhetnek.  De nem mindig gyorsít a kódon.  Körültekintően kell vele bánni.

Stream példa egy szálon  2 vektorpár összeadás: a+b = c, d+e = e utasításokGPU Mem. kez.Kernel kez. Memcpy: a -> GPU Memcpy: b -> GPU Kernel: c = a + b Memcpy: c -> CPU Memcpy: d -> GPU Memcpy: e -> GPU Kernel: f = d + e Memcpy: f -> CPU a -> GPU b -> GPU c = a + b d -> GPU c -> CPU e -> GPU f = d + e f -> CPU

Stream példa két szálon  2 vektorpár összeadás: a+b = c, d+e = f utasításokGPU Mem. kez.Kernel kez. Memcpy: a -> GPU Memcpy: b -> GPU Memcpy: d -> GPU Memcpy: c -> CPU a -> GPU b -> GPU a + b d -> GPU c -> CPU e -> GPU f -> CPU d+e Memcpy: d -> GPU Memcpy: e -> GPU Memcpy: d -> GPU Memcpy: f -> CPU 1. stream 2. stream

Több GPU használata  Ha a számítógépben több GPU is van, akkor lehet azokat felváltva/egyszerre használni.  Működés:  Csak ki kell választani, hogy melyik GPU-ra akarunk küldeni feladatot:  cudaError_t cudaSetDevice ( int device ) cudaError_tcudaSetDevice  Viszont figyelni kell:  Az adat konzisztenciára, ha átlapoló adatokkal dolgoznak a GPU-k.  A szinkonizációra.  Pl.: Itaratív simítás több GPU-n?

Egyéb CUDA eszközök  CUFFT  CUDA-ban megírt Gyors Fourier transzformáció.  Működik 1-, 2, és 3-Dimenziban.  Valós, és komplex adatokra is.  …  CUBLAS  CUDA Basic Linear Algebra Subprograms  Lineáris algebra függvénykönyvtár CUDA-hoz.  Alapvető mátrix/vektorműveletek (addíció, szorzás, stb.)  Ritka mátrixok kezelése.  Valós, és komplex adatok.  …

CUDA eszközök Kód kezelésre  Debuggerek:  CUDA GDB:  GNU debugger kiterjesztés CUDA-ra.  Parallel Nsight:  Visual Studio kiterjesztés GPU kódok debugolására.  Kód elemzők:  CUDA Visual Profiler