OpenCL - The open standard for parallel programming of heterogeneous systems



Hasonló dokumentumok
Eichhardt Iván GPGPU óra anyagai

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

Eichhardt Iván GPGPU óra anyagai

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?!

Párhuzamos és Grid rendszerek

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

Google Summer of Code OpenCL image support for the r600g driver

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

Magas szintű optimalizálás

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

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

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

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

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

AliROOT szimulációk GPU alapokon

OpenCL Kovács, György

GPU-Accelerated Collocation Pattern Discovery

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

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

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

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

Grafikus csővezeték 1 / 44

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

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

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

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

4. Funkcionális primitívek GPUn

Négyprocesszoros közvetlen csatolású szerverek architektúrája:

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

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

Az NIIF új szuperszámítógép infrastruktúrája Új lehetőségek a kutatói hálózatban

Felhő alapú hálózatok (VITMMA02) OpenStack Neutron Networking

OpenGL Compute Shader-ek. Valasek Gábor

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

Ismétlés: Moore törvény. Tranzisztorok mérőszáma: n*százmillió, n*milliárd.

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

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

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

Párhuzamos programozási platformok

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

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

Utolsó módosítás:

Jurek Zoltán, Tóth Gyula

A Webtől a. Gridig. A Gridről dióhéjban. Debreczeni Gergely (MTA KFKI RMKI) Debreczeni.Gergely@wigner.mta.hu

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

Párhuzamos programozási platformok

NIIFI HPC Szolgáltatás

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

Gaussian Mixture Modell alapú Fisher vektor számolás GPGPU-n

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

Ár: Ft Garancia: 2 Év

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

Hálózati operációs rendszerek II. Novell Netware 5.1 Szerver

GPGPU. Architektúra esettanulmány

Novell és Oracle: a csúcsteljesítményű, költséghatékony adatközpont megoldás. Sárecz Lajos Értékesítési konzultáns

GRAFIKUS PROCESSZOROK ALKALMAZÁSA KÉPFELDOLGOZÁSI FELADATOKRA

Első sor az érdekes, IBM PC ra alapul: 16 bites feldolgozás, 8 bites I/O (olcsóbb megoldás). 16 kbyte RAM. Nem volt háttértár, 5 db ISA foglalat

Fejlesztői szemmel at K

GPU-k a gravitációs hullám kutatásban

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

Bentley új generációs alkalmazásai: ContextCapture, LumenRt és Connect Edition. L - Tér Informatika Kft.

CUDA haladó ismeretek

KUTATÁSOK INFORMATIKAI TÁMOGATÁSA. Dr. Szénási Sándor

2. Generáció ( ) 3. Generáció (2001) NVIDIA TNT2, ATI Rage, 3dfx Voodoo3. Klár Gergely

GPGPU ÚJ ESZKÖZÖK AZ INFORMÁCIÓBIZTONSÁG TERÜLETÉN

Ordering MCMC gyorsítása OpenCL környezetben

Operációs rendszerek III.

Operációs rendszerek. UNIX fájlrendszer

Dr. Schuster György október 30.

GPU (grafikus processzor a nagy teljesítményű feldolgozáshoz, nincs grafikus kimenet)

Közösség, projektek, IDE

Amazon Web Services. Géhberger Dániel Szolgáltatások és alkalmazások március 28.

Virtualizációs technológiák Linux alatt (teljesítményteszt)

Intel Pentium G2120 Intel HD Graphics kártyával (3,1 GHz, 3 MB gyorsítótár, 2 mag)

Occam 1. Készítette: Szabó Éva

Bevezetés, platformok. Léczfalvy Ádám

CUDA alapok CUDA projektek. CUDA bemutató. Adatbányászat és Webes Keresés Kutatócsoport SZTAKI

Big Data. A CERN, mint a. egyik bölcsője... Barnaföldi Gergely Gábor. Berényi Dániel & Biró Gábor & Nagy-Egri Máté Ferenc & Andrew Lowe

Hozzáférés a HPC-hez, kezdő lépések (előadás és demó)

UNIX / Linux rendszeradminisztráció

NCS5500 bemutató. Balla Attila

Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD

Oktatási Segédlet. OpenCL

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

Tarantella Secure Global Desktop Enterprise Edition

Nokia N9 - MeeGo Harmattan bemutatkozik

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

BIG DATA ÉS GÉPI TANULÁS KÖRNYEZET AZ MTA CLOUD-ON KACSUK PÉTER, NAGY ENIKŐ, PINTYE ISTVÁN, HAJNAL ÁKOS, LOVAS RÓBERT

TANÚSÍTVÁNY KARBANTARTÁS Jegyzıkönyv

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Informatikai Tesztek Katalógus

Lineáris egyenlet. Lineáris egyenletrendszer. algebrai egyenlet konstansok és első fokú ismeretlenek pl.: egyenes egyenlete

SQLServer. SQLServer konfigurációk

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Apple számítógépek összehasonlító táblázata

Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása. Rákosi Péter és Lányi Árpád

Komponens alapú fejlesztés

Mutatók és mutató-aritmetika C-ben március 19.

Az operációs rendszerek fejlődése

Bevezetés az informatikába

Átírás:

OpenCL - The open standard for parallel programming of heterogeneous systems

GPU-k általános számításokhoz GPU Graphics Processing Unit Képalkotás: sok, általában egyszerű és független művelet < 2006: programmable shaders renderelés (Pixar RenderMan Toy Story) 2006: CUDA -Compute Unified Device Architecture csak Nvidia kártyákon kezdetben 128 CUDA core, 8 compute unit (Tesla c870) 2008: OpenCL cross-platform Khronos csoport (OpenGL!) OpenCL 1.0: Mac OS X Snow Leopard 2009 fontosabb partnerek: AMD, Intel (Larrabee) és természetesen Nvidia Alternatívák: DirectCompute, OpenMP, OpenACC stb.

OpenCL working group members Nvidia in chair, Apple is specification editor Már most is tekinthető általános szabványnak.

OpenCL könyvek OpenCL Programming Guide - The Red Book of OpenCL http://www.amazon.com/opencl-programming-guide-aaftab-munshi/dp/0321749642 OpenCL in Action http://www.amazon.com/opencl-action-accelerate-graphics-computations/dp/1617290173/ Heterogeneous Computing with OpenCL http://www.amazon.com/heterogeneous-computing-with-opencl-ebook/dp/b005jrhyus The OpenCL Programming Book http://www.fixstars.com/en/opencl/book/

OpenCL API AMD http://developer.amd.com/zones/openclzone/ INTEL http://software.intel.com/en-us/articles/opencl-sdk/ NVIDIA http://developer.nvidia.com/opencl

OpenCL: egy példa Soros megoldás OpenCL megoldás void add_vector(int dim,float *A,float *B, float *C) { for(int i=0;i<dim;i++) C[i]=A[i]+B[i]; } kernel void add_vector( global float *A, global float *B,_global float *C) { int tidx = get_global_id(0); Különbségek:? C[tidx]=A[tidx]+B[tidx]; }

OpenCL: egy példa (C) Soros megoldás OpenCL megoldás void add_vector(int dim,float *A,float *B, float *C) { for(int i=0;i<dim;i++) C[i]=A[i]+B[i]; } kernel void add_vector( global float *A, global float *B,_global float *C) { int i = get_global_id(0); C[i]=A[i]+B[i]; } Különbségek: - hol a vektor dimenziója? Soros kód: dim változó OpenCL: a get_global_id(0) maximumális értéke a dimenzió, melyet előzőleg beállítottunk a kernel hívás előtt - milyen memória címeket használhatunk? Minden OpenCL compute device saját memória területtel rendelkezik, melyet előre le kell foglalnunk

OpenCL: compute device memory types Global domain: work item size Local groups: workgroups Eszköz specifikus a paraméterezés, de mindent le tudunk kérdezni futásidőben.

OpenCL: memória Az architektúra legnagyobb hátránya: Egy számolás eredményének elérése: host device host Még abban az esetben is, ha a kódunkat a lokális CPU-n futtatjuk! A másolás egyik korlátja maga a PCI-express Lehetőség párhuzamos másolás-számolásra Megjegyzés: 1. sok esetben hatékonyabb helyben újraszámolni mint beolvasni 2. sok esetben a kiolvasás lassúsága miatt nem hatékony 3. Nincs virtuális memória de lesz!

OpenCL: memória Hierarchikus memória: Minél Az architektúra legnagyobb hátránya: lentebb megyünk annál kisebb a memória eredményének mérete, cserébe egyre Egy számolás elérése: gyorsabb! host device host Még 1. abban esetben is, ha a kódunkat Hostazmemory a lokáliscsak CPU-n futtatjuk! a CPU éri el, 10-20 GB/s Akár 512 GB 2. Global/Constant memory Csak az adott device-on látható Lehetőség párhuzamos másolás-számolásra 100-250 GB/sec (GPU), <6GB 3. Local memory Megjegyzés: Csak egy adott workgroup látja 1. sok esetben hatékonyabb helyben 16-64 KB/work-item újraszámolni mint beolvasni 4. Private memory 2. sok esetben a kiolvasás lassúsága Csak az adott work-item látja miatt nemkb hatékony 16-64 A másolás egyik korlátja maga a PCI-express 3. Nincs virtuális memória de lesz!

OpenCL: fordítás Fordítás történhet offline és online módon. Utóbbi az elterjedt. univerzális OpenCL API: C/C++ objektumok: Konfiguráció: Device - eszköz objektuma Context - eszközök környezet Queue - feladatok kiosztása Memória: Buffer - memória blokkok Image - 2D vagy 3D kép Végrehajtás: Program - kernelek Kernel - maguk a feladatok Példa fordításra: Mac OS X (>10.6): g++ -framework OpenCL cl_test.cpp -o cl_test Linux: Nvidia SDK g++ -I<NVIDIA_SDK>/OpenCL/common/inc/ cl_test.cpp -o cl_test

OpenCL: fordítás

Példa: Alacsony szintű képi leírók számolása Segmentation Region of Interest Dense Grid

Példa: Alacsony szintű képi leírók számolása Sok ezer független leíró képenként a párhuzamosítás alapja Mivel GPU/CPU közös kód: - csak egy dimenziós párhuzamosítás - no image support Kis memória igény: - maga a nyers kép pl. 1Mio*3Byte - gradiens képek: 1Mio*4Byte - leírók: 128*4*N Byte Nyereség: ~10x CPU-hoz képest (nem optimális) Még több ha PCA + Fisher számolás : ~40x