Google Summer of Code 2015 OpenCL image support for the r600g driver.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

 Folyékony anyagok  Füstszerű jelenségek  Felhők  Festékek.
CUDA.
Objective- C Bereczki Gréta Tamara
MINTA1 Element of the Theory of the Computation Lecture x. Title.
Objective-C Készítette: Zsivics Sanel NL5LWN. Tartalom bevezető történeti háttér rangsor elterjedtsége / népszerűsége alapok felépítése (.h,.m, xcode,
Adatbányászati technikák (VISZM185)
Bevezetés.  A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja  Teljesítménykövetelmények:  Animáció: néhány nsec.
 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.
 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.
GPGPU labor I. OpenGL, Cg.
Junit testing.
A Windows 7 automatizált telepítése Windows AIK használatával
Bevezetés a Java programozásba
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
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.
Ellenőrző kérdések a)Auto-indexing enabled b)Auto-indexing disabled c)Nem eldönthető 1.
VFP programozása report készítése menü készítése dinamikus elemek
PIC processzor és környezete
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
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:
Fejlett grafikai algoritmusok Megvilágítási modellek
Számítógépes Grafika 2. gyakorlat Programtervező informatikus (esti) 2011/2012 őszi félév.
Számítógépes grafika 3. gyakorlat.
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető.
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Széchenyi Isván Egyetem Számítógépes hálózatok II 1 Számítógépes Hálózatok II Széchenyi István Egyetem.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Rendering pipeline Ogre3D
GPGPU A grafikus hardver általános célú felhasználása
Java programozási nyelv Filekezelés
A szoftver, szoftvertípusok
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
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.
Programozás I. Típus algoritmusok
CUDA C/C++ programozás
WEBSTAR CSOPORT WC S ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE Marics Tamás június 20.
A Visual Basic nyelvi elemei
Akos Balasko MTA SZTAKI, Hungarian Academy of Sciences Felhő használat paraméterteret bejáró szimulációk futtatására.
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.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
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.
Mobil alkalmazások fejlesztése Vonalkód leolvasó Symbian alapú mobiltelefonra Készítette: Tóth Balázs Viktor.
Gombos GergőKorszerű Adatbázis 2012/13 tavasz 2 Kik használják?
Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Grafikus szoftver Szirmay-Kalos László. Interaktív programok felépítése input csővezeték output csővezeték.
Analogical and Neural Computing Laboratory, Hungarian Academy of Sciences, Budapest 1 MATLAB u Hatékony, interaktív, tudományos és műszaki számítások,
Teljesítményelemzés CLBenchmark 1.1-el
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Bevezetés.  Miért …  … egyszálúan programozunk?  … probléma ez?  Hogyan …  … változik ez?  … tudjuk kihasználni?  Megéri-e párhuzamosítani?
Szécsi László 3D Grafikus Rendszerek 15. előadás
GPGPU – CUDA 1..
OpenCL bővítmények.
International Olympiad in Informatics
Monte Carlo módszerek.
Vizualizáció és képszintézis
Témavezető: Dr. Oniga István Fejlesztők: Erdős andrás Zákány józsef
Lineáris egyenletrendszerek megoldása
OpenCL bevezetés II..
„Big Data” elemzési módszerek
GPGPU – CUDA 2..
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
OpenGL kiterjesztések (extensions)
Bevezetés GPGPU Alkalmazások.
CUDA – OpenGL.
Clang tooling.
Előadás másolata:

Google Summer of Code 2015 OpenCL image support for the r600g driver

Képek:

a

Min szeretnék dolgozni? Kapcsolatfelvétel a mentorral

Project proposal Célok Miért jó ez? Milestone-ok Architektúra vázlata

Proposalok elbírálása

Kapcsolatfelvétel a szervezettel Fejlesztési környezet Folyamatok Szokások

Kép balra:

OpenCL image support for the r600g driver

GPGPU Képek: AMD Accelerated Parallel Processing OpenCL Programming Guide

OpenCL image support for the r600g driver OpenCL: GPGPU keretrendszer GPU-side: OpenCL C nyelv kernel void vec_add(global float *a, global const float *b) { int i = get_global_id(0); a[i] += b[i]; }

OpenCL image support for the r600g driver OpenCL: GPGPU keretrendszer GPU-side: OpenCL C nyelv CPU-side: C, C++ lib [...] // inicializáció cl_program program = clCreateProgramWithSource(...); cl_kernel kernel = clCreateKernel(program, "vec_add", [...]); clSetKernelArg(kernel, 0, sizeof(cl_mem), &mem_buf_a); clSetKernelArg(kernel, 1, sizeof(cl_mem), &mem_buf_b); size_t work_size[] = {16}; clEnqueueNDRangeKernel(q, kernel, [...], work_size, [...]);

OpenCL image support for the r600g driver A GPU hatékonyan kezel képeket

OpenCL image support for the r600g driver A GPU hatékonyan kezel képeket Interpoláció Kép:

OpenCL image support for the r600g driver A GPU hatékonyan kezel képeket Interpoláció Swizzling (cache!) x = x1 x0 bits y = y1 y0 bits mem_addr = y1 x1 y0 x0 bits Kép:

OpenCL image support for the r600g driver A GPU hatékonyan kezel képeket Interpoláció Swizzling Formátum-konverzió XRedGreenBlue 15 bits RedGreenBlue 5 bits6 bits5 bits RedGreenBlue 8 bits

OpenCL image support for the r600g driver OpenCL image és sampler objektumok const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_NEAREST; kernel void red_to_green(read_only image2d_t input, write_only image2d_t output) { size_t x = get_global_id(0); size_t y = get_global_id(1); uint4 color = read_imageui(input, sampler, (int2)(x, y)); // do something with color write_imageui(output, (int2)(x, y), color); }

OpenCL image support for the r600g driver mesa: 3D, video, GPGPU libek gyűjteménye 3D rendering API-k (pl. OpenGL) Video gyorsító API-k (pl. VAAPI) Eszközillesztők (driverek) r600g: AMD R600, R700, Evergreen és Northern Islands GPU-k g szuffix: Gallium

Gallium 3D Függ-e az alábbitól? APIHWOS IgenNemNem* NemIgenNem Igen

OpenCL state tracker: clover API-szintű absztakciók menedzselése Buffer, image, sampler Adatmozgatás Események OpenCL C –> GPU asm (most: R600 ISA) Device Driver adja a targetet Clang+LLVM fordít Clang OpenCL frontend LLVM AMDGPU backend Feladat: Fordítsa le a képekkel kapcsolatos OpenCL kódot is!

LLVM Fordítóprogram-keretrendszer LLVM IR: ASM szintű gépfüggetlen nyelv SSA: Static Single = internal constant [14 x i8] c"hello, world\0A\00" declare define %argc, i8** %argv) nounwind { entry: %tmp1 = getelementptr [14 x i32 0, i32 0 %tmp2 = call i32 i8* %tmp1 ) nounwind i32 0 }

LLVM Front-end: nyelv -> LLVM Back-end: LLVM -> ? gépi kód ASM szövege Másik nyelv LLVM bitkód Bitkódok összelinkelhetőek Rengeteg optimalizációs algoritmus

OpenCL C -> R600 ISA Front-End: Clang Built-In Library: libclc LLVM bitkód library Feladat: Kép típus Képi builtinek Képek: AMD Accelerated Parallel Processing OpenCL Programming Guide

Device Driver: r600g API-szintű absztrakciók -> GPU-szintű fogalmak GPU „felparaméterezése”: regiszterek Kernel kezdőcíme Erőforrások kezdőcímei, metaadatai: memóriaterületek nézetei Nézetek VTX/TEX: csak olvasható nézet, vertex és texture bufferekre RAT (aka UAV): írható/olvasható nézet Van belőlük több (VTX0, VTX1, RAT5 stb.) Erőforrások leképezése Kernel input -> VTX0 Global bufferex -> VTX1, RAT0 read_only képek -> VTXn (n >= 2) write_only képek -> RATn (n >= 1)

Kép: Evergreen Family Instruction Set Architecture

Implementált feature-ök Képek metaadatai (dimenziók, pixelformátum) get_image_* Adatok küldése a kernelnek Képek olvasása és írása read_image* write_image* Csak 2D támogatott Sampler objektumok Csak kernelparaméterben Tesztek

Open-Source projektek mesa: maga a driver LLVM: OpenCL C fordításához libclc: OpenCL C beépített függvények piglit: tesztek Kevés patch került upstream-be (még)

Linkek Blog: zogi-gsoc2015.blogspot.comzogi-gsoc2015.blogspot.com GSoC: LLVM Language Reference: llvm.org/docs/LangRef.htmlllvm.org/docs/LangRef.html Evergreen ISA: developer.amd.com/wordpress/media/2012/10/AMD_Evergreen- Family_Instruction_Set_Architecture.pdf developer.amd.com/wordpress/media/2012/10/AMD_Evergreen- Family_Instruction_Set_Architecture.pdf