CUDA – OpenGL.

Slides:



Advertisements
Hasonló előadás
 Folyékony anyagok  Füstszerű jelenségek  Felhők  Festékek.
Advertisements

CUDA.
 CUDA mint architektúra  Párhuzamos feldolgozásra optimalizált architektúra  CUDA mint GPGPU keretrendszer  Runtime és Driver API  CUDA C/C++  NVCC.
 Bővítmény rendszer  Az OpenGL bővítményeihez hasonló  A specifikiáció természetes fejlődése ▪ Gyártó specifikus bővítmény ▪ Általános bővítmények.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Java programozási nyelv 3. rész – Osztályok I.
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Számítógépes Grafika 2. gyakorlat Programtervező informatikus (esti) 2011/2012 őszi félév.
2. gyakorlat DirectX 2007/2008 tavasz Klár Gergely
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.
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.
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.
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.
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.
Google Summer of Code 2015 OpenCL image support for the r600g driver.
Szimmetriák szerepe a szilárdtestfizikában
Kauzális modellek Randall Munroe.
A TUDOMÁNYOS KUTATÁS MÓDSZERTANA
2.1Jelátalakítás - kódolás
Az úttervezési előírások változásai
Profitmaximalizálás  = TR – TC
A járműfenntartás valószínűségi alapjai
Szenzorok Bevezetés és alapfogalmak
Végeselemes modellezés matematikai alapjai
A magas baleseti kockázatú útszakaszok rangsorolása
Szerkezetek Dinamikája
Hőtan BMegeenatmh 5. Többfázisú rendszerek
AUTOMATIKAI ÉPÍTŐELEMEK Széchenyi István Egyetem
VÁLLALATI Pénzügyek 2 – MM
GPGPU – CUDA 1..
Hőtan BMEGEENATMH 4. Gázkörfolyamatok.
Szerkezetek Dinamikája
OpenCL bővítmények.
Összeállította: Polák József
Tisztelt Hallgatók! Az alábbi példamegoldások segítségével felkészülhetnek a 15 pontos zárthelyi dolgozatra, ahol azt kell majd bizonyítaniuk, hogy a vállalati.
Anyagforgalom a vizekben
Melanóma Hakkel Tamás PPKE-ITK
Az új közbeszerzési szabályozás – jó és rossz gyakorlatok
Bevezetés az alvás-és álomkutatásba
Kalandozások az álomkutatás területén
TANKERÜLETI (JÁRÁSI) SZAKÉRTŐI BIZOTTSÁG
Nemzetközi tapasztalatok kihűléssel kapcsolatban
Járványügyi teendők meningococcus betegség esetén
Vitaminok.
A sebész fő ellensége: a vérzés
Pharmanex ® Bone Formula
VÁLLALATI PÉNZÜGYEK I. Dr. Tóth Tamás.
MOSZKVA ZENE: KALINKA –HELMUT LOTTI AUTOMATA.
Bőrimpedancia A bőr fajlagos ellenállásának és kapacitásának meghatározása Impedancia (Z): Ohmos ellenállást, frekvenciafüggő elemeket (kondenzátort, tekercset)
Poimenika SRTA –
Összefoglalás.
Az energiarendszerek jellemzői, hatékonysága
Konzerváló fogászat Dr. Szabó Balázs
Outlier detektálás nagyméretű adathalmazokon
További MapReduce szemelvények: gráfproblémák
Járműcsarnokok technológiai méretezése
VÁLLALATI PÉNZÜGYEK I. Dr. Tóth Tamás.
RÉSZEKRE BONTOTT SOKASÁG VIZSGÁLATA
Az anyagok fejlesztésével a méretek csökkennek [Feynman, 1959].
Minőségmenedzsment alapjai
Konferencia A BIZTONSÁGOS ISKOLÁÉRT Jó kezdeményezések
Vizuális adatanalízis
Klasszikus Szabályozás elmélet
GPGPU – CUDA 2..
OpenGL II.
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
OpenGL V.
Függvénysablonok használata
Előadás másolata:

CUDA – OpenGL

CUDA textúra támogatás Textúra memória 2D lokalitásra optimalizált elérés A GPU textúrázó egységének használata Textúra szűrés Bővített memória címzés Konstans késleltetés Két támogatott API Textúra referencia Textúra objektum

CUDA textúra referencia Egyszerű, limitált funkciók Globális textúra változó, fordítási időben DataType: adat típus Type: textúra típus ReadMode: olvasási mód texture<DataType, Type, ReadMode> texRef;

CUDA textúra referencia Változtatható paraméterek struct textureReference { int normalized; // Normalizált koordináták enum cudaTextureFilterMode filterMode; // Szűrési mód enum cudaTextureAddressMode addressMode[3]; // Címzési mód struct cudaChannelFormatDesc channelDesc; // Texel formátum int sRGB; unsigned int maxAnisotropy; enum cudaTextureFilterMode mipmapFilterMode; float mipmapLevelBias; float minMipmapLevelClamp; float maxMipmapLevelClamp; } struct cudaChannelFormatDesc { int x, y, z, w; enum cudaChannelFormatKind f; }

Textúra olvasás kernel kódból Szűrt texel olvasás Direkt texel olvasás template<class T> T tex1D(cudaTextureObject_t texObj, float x); template<class T> T tex2D(cudaTextureObject_t texObj, float x, float y); template<class T> T tex3D(cudaTextureObject_t texObj, float x, float y, float z); template<class T> T texCubemap(cudaTextureObject_t texObj, float x, float y, float z); template<class T> T tex2Dgather(cudaTextureObject_t texObj, float x, float y, int comp = 0); template<class T> T tex1Dfetch(cudaTextureObject_t texObj, int x); template<class T> tex2DLod(cudaTextureObject_t texObj, float x, float y, float level); template<class T> T tex3DLod(cudaTextureObject_t texObj, float x, float y, float z, float level);

CUDA textúra objektum Rugalmas textúra definíció struct cudaTextureDesc { enum cudaTextureAddressMode addressMode[3]; enum cudaTextureFilterMode filterMode; enum cudaTextureReadMode readMode; int sRGB; int normalizedCoords; unsigned int maxAnisotropy; enum cudaTextureFilterMode mipmapFilterMode; float mipmapLevelBias; float minMipmapLevelClamp; float maxMipmapLevelClamp; };

CUDA textúra objektum Rugalmas erőforrás definíció struct cudaResourceDesc { cudaArray_t array; struct cudaChannelFormatDesc desc; void* devPtr; size_t height; cudaMipmappedArray_t mipmap; size_t pitchInBytes; enumcudaResourceType resType; size_t sizeInBytes; size_t width; };

// Allocate CUDA array in device memory cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc(32, 0, 0, 0, cudaChannelFormatKindFloat); cudaArray* cuArray; cudaMallocArray(&cuArray, &channelDesc, width, height); // Copy to device memory some data located at address h_data in host memory cudaMemcpyToArray(cuArray, 0, 0, h_data, size, cudaMemcpyHostToDevice); // Specify texture struct cudaResourceDesc resDesc; memset(&resDesc, 0, sizeof(resDesc)); resDesc.resType = cudaResourceTypeArray; resDesc.res.array.array = cuArray; // Specify texture object parameters struct cudaTextureDesc texDesc; memset(&texDesc, 0, sizeof(texDesc)); texDesc.addressMode[0] = cudaAddressModeWrap; texDesc.addressMode[1] = cudaAddressModeWrap; texDesc.filterMode = cudaFilterModeLinear; texDesc.readMode = cudaReadModeElementType; texDesc.normalizedCoords = 1; // Create texture object cudaTextureObject_t texObj = 0; cudaCreateTextureObject(&texObj, &resDesc, &texDesc, NULL);

CUDA - OpenGL Az OpenGL erőforrások megoszthatók CUDA inicializáció Az objektumokat az OpenGL hozza létre A megosztás során a pillanatnyi paraméterek másolódnak Az objektumok használata kizárólagos CUDA inicializáció cudaError_t cudaGLSetGLDevice(int device);

CUDA - OpenGL Buffer objektum regisztráció Textúra objektum regisztráció cudaError_t cudaGraphicsGLRegisterBuffer( cudaGraphicsResource** resource, GLuint buffer, unsigned int flags) cudaError_t cudaGraphicsGLRegisterImage( cudaGraphicsResource** resource, GLuint image, GLenum target, unsigned int flags)

CUDA - OpenGL Erőforrás átvétel Átvett erőforrás elérése cudaError_t cudaGraphicsMapResources( int count, cudaGraphicsResource_t* resources, cudaStream_t stream = 0) cudaError_t cudaGraphicsResourceGetMappedPointer( void** devPtr, size_t* size, cudaGraphicsResource_t resource)

CUDA - OpenGL Átvett erőforrás elérése Erőforrás regisztráció törlése cudaError_t cudaGraphicsUnmapResources( int count, cudaGraphicsResource_t* resources, cudaStream_t stream = 0) cudaError_t cudaGraphicsUnregisterResource( cudaGraphicsResource_t resource)