Python modul PyCUDA: hijerarhija GPU memorije
-
Globalna memorija (pripada rešetki, ključna riječ
__device__
)- Tu se kopiraju argumenti kod poziva funkcije u svim dosadašnjim primjerima
-
Konstantna memorija (pripada aplikaciji, ključna riječ
__constant__
)- Vrši se međuspremanje za brži pristup varijablama od pristupa globalnoj memoriji
- "Varijable" koje su
__constant__
moraju biti deklarirane izvan svih zrna
-
Dijeljena memorija (pripada bloku, ključna riječ
__shared__
)- Može biti statički ili dinamički alocirana
-
Lokalna memorija (pripada niti, nema ključne riječi)
- Koristi se automatski kod polja deklariranih unutar niti
-
Registri (pripadaju niti, nema ključne riječi)
- Koristi se varijabli kod polja deklariranih unutar niti
- Ponekad, ovisno o prevoditelju, može se koristiti i kod polja
Zadatak
- Deklarirajte varijablu
pi
tipa float u konstantnoj memoriji i postavite ju na vrijednost3.14159
. - Definirajte zrno
pi_zapisi(float *polje)
. Unutar modula, ali van zrna, definirajte poljepi_polje
tipa float veličine 200 elemenata u globalnoj memoriji, u koje će svaka od niti zrnapi_zapisi()
upisati vrijednost konstantepi
. Pokrenite izvođenje zrna sa 20 niti po bloku i 10 blokova. (Uputa: za provjeru točnosti koda možete iskoristitiprintf()
.)
Author: Vedran Miletić, Kristijan Lenković