Google Summer of Code OpenCL image support for the r600g driver

Hasonló dokumentumok
OpenCL - The open standard for parallel programming of heterogeneous systems

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

GPGPU alapok. GPGPU alapok Grafikus kártyák evolúciója GPU programozás sajátosságai

Adat- és feladat párhuzamos modell Az ISO C99 szabvány részhalmaza

GPGPU. GPU-k felépítése. Valasek Gábor

Párhuzamos és Grid rendszerek

Fejlesztői szemmel at K

SAT probléma kielégíthetőségének vizsgálata. masszív parallel. mesterséges neurális hálózat alkalmazásával

Grafikus csővezeték 1 / 44

Videókártya - CUDA kompatibilitás: CUDA weboldal: Példaterületek:

GPGPU-k és programozásuk Dezső, Sima Sándor, Szénási

HLSL programozás. Grafikus játékok fejlesztése Szécsi László t06-hlsl

Grafikus csővezeték és az OpenGL függvénykönyvtár

Haladó Grafika EA. Inkrementális képszintézis GPU-n

Számítógépek felépítése

Diplomamunka. Miskolci Egyetem. GPGPU technológia kriptográfiai alkalmazása. Készítette: Csikó Richárd VIJFZK mérnök informatikus

MSP430 programozás Energia környezetben

Eichhardt Iván GPGPU óra anyagai

Eichhardt Iván GPGPU óra anyagai

Haladó Fordítóprogramok

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Parciális rekonfiguráció Heterogán számítási rendszerek VIMIMA15

OpenGL Compute Shader-ek. Valasek Gábor

i1400 Image Processing Guide A-61623_zh-tw

Operációs rendszerek Memóriakezelés 1.1

Grafikus csővezeték 2 / 77

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

OpenCL modul 2. óra: Első rész

Parciális rekonfiguráció Heterogén számítási rendszerek VIMIMA15

Magas szintű optimalizálás

Excel vagy Given-When-Then? Vagy mindkettő?

Széchenyi István Egyetem

Számítógépes grafika

C# osztályok. Krizsán Zoltán

Vizuális, eseményvezérelt programozás XI.

A CUDA előnyei: - Elszórt memória olvasás (az adatok a memória bármely területéről olvashatóak) PC-Vilag.hu CUDA, a jövő technológiája?!

Mobil Informatikai Rendszerek

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 felhasználása számítógépes grafikában (bevezető egy primitív keretrendszer)

Utolsó módosítás:

A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja Teljesítménykövetelmények:

KÉPFELDOLGOZÓ ALGORITMUSOK FEJLESZTÉSE GRAFIKUS HARDVER KÖRNYEZETBEN

Clang Static Analyzer belülről

OpenCL Kovács, György

GPGPU és számítások heterogén rendszereken

(GP)GPU kezdetek. Avagy hogyan lesz az algoritmusból implementáció. Lectures on Modern Scientific Programming Wigner RCP November 2015.

2D képszintézis. Szirmay-Kalos László

GPU alkalmazása az ALICE eseménygenerátorában

AliROOT szimulációk GPU alapokon

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Silabs STK3700, Simplicity Studio laborgyakorlat

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

D3D, DXUT primer. Grafikus játékok fejlesztése Szécsi László t01-system

Számítógépek felépítése, alapfogalmak

org.hibernate.lazyinitializationexception: illegal access to loading collection at

4. Funkcionális primitívek GPUn

Searching in an Unsorted Database

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I.

Adatbázis-kezelés ODBC driverrel

Textúrák. Szécsi László

Párhuzamos és Grid rendszerek. Flynn-féle architektúra modell. ClearSpeed gyorsító kártya. 2006: Tokyo Institute of Technology's

Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

Flynn-féle architektúra modell. Párhuzamos és Grid rendszerek (8. ea) egy vektorprocesszor. Belső felépítés. ClearSpeed gyorsító kártya MTAP

GPGPU. Architektúra esettanulmány

Grafikus kártyák, mint olcsó szuperszámítógépek - I.

A keretrendszer. A linuxos keretrendszer az eredeti alapján készült (nagyrészt C++-ban), ezért nagyjából azzal azonos funkcionalitásokkal rendelkezik.

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Nemlineáris optimalizálási problémák párhuzamos megoldása grafikus processzorok felhasználásával

Szakdolgozat. Dandár Gábor

Hadoop és használata az LPDS cloud-on

OSZTOTT 2D RASZTERIZÁCIÓS MODELL TÖBBMAGOS PROCESSZOROK SZÁMÁRA

ARM Cortex magú mikrovezérlők. mbed

Fejlett programozási nyelvek C++ Iterátorok

Tervminták a valósidejű gyakorlatban

FELÜLET...13 PROJEKTTERV...14

eseményvezérelt megoldások Vizuális programozás 5. előadás

Hallgatói segédlet: Nvidia CUDA C programok debugolása Nvidia Optimus technológiás laptopokon. Készítette: Kovács Andor. 2011/2012 első félév

Plakátok, részecskerendszerek. Szécsi László





Demo board. Nagy András. Conet Kft november 29.

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Adatbázis és alkalmazás konszolidáció Oracle SPARC T4/5 alapon

GPGPU programozás oktatása

Objektumorientált programozás C# nyelven

Kir-Dev tavasz. Március. Február. Kir-Dev

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

100% BIO Natur/Bio kozmetikumok és testápolás

GPGPU programozás lehetőségei. Nagy Máté Ferenc Budapest ALICE ELTE TTK Fizika MSc 2011 e-science Café

ARM processzorok felépítése

HLSL programozás. Szécsi László

Operációs rendszerek. A Windows NT felépítése

Grafikus processzorok általános célú programozása (GPGPU)

Objektumorientált programozás C# nyelven

Párhuzamos és Grid rendszerek

PÁRHUZAMOS SZÁMÍTÁSTECHNIKA MODUL AZ ÚJ TECHNOLÓGIÁKHOZ KAPCSOLÓDÓ MEGKÖZELÍTÉSBEN

Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt

4. gyakorlat: interpolációs és approximációs görbék implementációja

Operációs rendszerek. UNIX fájlrendszer

Átírás:

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

Képek: http://www.google-melange.com

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: http://goo.gl/snp5l4

OpenCL image support for the r600g driver

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: http://goo.gl/escxdy

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: http://www.slideshare.net/shripadthite/jobtalk

OpenCL image support for the r600g driver A GPU hatékonyan kezel képeket Interpoláció Swizzling Formátum-konverzió X Red Green Blue 1 5 bits 5 bits 5 bits Red Green Blue 5 bits 6 bits 5 bits Red Green Blue 8 bits 8 bits 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

https://en.wikipedia.org/wiki/gallium3d

Gallium 3D Függ-e az alábbitól? API HW OS Igen Nem Nem* Nem Igen Nem Igen Igen 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 Assignment @.str = internal constant [14 x i8] c"hello, world\0a\00" declare i32 @printf(i8*,...) define i32 @main(i32 %argc, i8** %argv) nounwind { entry: %tmp1 = getelementptr [14 x i8]* @.str, i32 0, i32 0 %tmp2 = call i32 (i8*,...)* @printf( 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.com GSoC: www.google-melange.com LLVM Language Reference: llvm.org/docs/langref.html Evergreen ISA: developer.amd.com/wordpress/media/2012/10/amd_evergreen- Family_Instruction_Set_Architecture.pdf