Steps3d - Tutoriale - Programare CUDA (partea 2)

Lucrul cu memoria de textură

CUDA suportă texturi, oferind în același timp o gamă completă de funcționalități disponibile de la API-ul grafic. Lucrul cu texturi in CUDA trece prin așa-numita textura link-uri (referință textura).

Parametrul type specifică tipul de date returnate atunci când citesc dintr-o textură. Ca tip, puteți utiliza tipurile întregi de bază, float. precum și toate vectorul lor 1/2/3/4-dimensional.

parametru Dim specifică dimensiunea texturii și ia valori de la 1 la 3 inclusiv.

Valoarea parametrului ReadMode efectuează una dintre următoarele constante - cudaReadModeNormalizedFloat (pentru cazul în care este necesar să se producă normalizare) și cudaReadModeElementType (atunci când nu nu este necesar să se efectueze normalizare).

În ceea ce memoria texturii poate fi orice zonă de memorie ca liniar (memorie liniară), și așa-numitele CUDA matrice (matrice CUDA). Alegerea unei memorii liniare ca memorie pe textură impune următoarele limitări:

Pentru a citi din texturi aranjate într-o memorie liniară este utilizată funcția tex1Dfetch.

Pentru a citi dintr-o textură plasată utilizând următoarele caracteristici în Cuda-tracturi:

În cazul în care textura este plasat într-o memorie liniară, pentru alocarea și Dealocarea memoriei în articolul precedent a discutat funcțiile și cudaMalloc cudaFree.

Izolarea și eliberare CUDA-matrice realizate folosind funcțiile cudaMallocArray și cudaFreeArray. La alocarea memoriei ca CUDA-matrice la o altă dimensiune decât cudaMallocArray necesară funcția să treacă o referință la o structură cudaChannelFormatDesc. utilizat pentru a descrie structura texturii.

Tipul de textură se bazează pe următoarea structură: