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

Hasonló dokumentumok
GPU alkalmazása az ALICE eseménygenerátorában

OpenCL - The open standard for parallel programming of heterogeneous systems

GPGPU: Általános célú grafikus processzorok cgpu: computational GPU GPGPU = cgpu Adatpárhuzamos gyorsító: dedikált eszköz, ami eleve csak erre

Párhuzamos és Grid rendszerek

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

Grafikus csővezeték 1 / 44

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

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

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

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

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

Eichhardt Iván GPGPU óra anyagai

AliROOT szimulációk GPU alapokon

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

Eichhardt Iván GPGPU óra anyagai

Magas szintű optimalizálás

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

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

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

Számítógép architektúra

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

GPGPU. Architektúra esettanulmány

GPU-Accelerated Collocation Pattern Discovery

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

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

Bepillantás a gépházba

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

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

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

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

Ár: Ft Garancia: 2 Év

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

3DMark 06 CPU. Magok / Szálak 8MB / MB /

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

OpenCL Kovács, György

A számítógépek felépítése. A számítógép felépítése

Intel Celeron G550 Intel HD Graphics kártyával (2,6 GHz, 2 MB gyorsítótár, 2 mag)

Játékfejlesztés a Windows Phone 7 erejével

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

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

Párhuzamos programozási platformok

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

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

Párhuzamos programozási platformok

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

IBM mobil számítógépek

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

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

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

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

Hogyan kell 3D tartalmat megtekinteni egy BenQ kivetítőn? Minimális rendszerkövetelmények 3D tartalom lejátszásához BenQ kivetítőn:

efocus Content management, cikkírás referencia

Technikai tájékoztató - kérdések és válaszok TSD-QA (2012/02)

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

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

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

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

Operációs rendszerek. Bemutatkozás

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

Hitachi Flash Újdonságok. Szokol Zsolt Senior Solution Consultant 2016 március

Bevezetés az informatikába

SZÁMÍTÓGÉP FELÉPÍTÉSE (TK 61-TŐL)

Bevezetés a párhuzamos programozási koncepciókba

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

GPGPU programozás oktatása

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

CRA - Cisco Remote Access

VGN-TT21XN/B. Extrém stílus és hordozhatóság

IT infrastruktúra egy modern egyetemi könyvtárban

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

Toshiba Qosmio X70 és Satellite P70 szórakozás felsőfokon

6.2. TMS320C64x és TMS320C67xx DSP használata

Mobilplatformok Merre tart a világ? Kis Gergely MattaKis Consulting

SVE1111M1E. a legnépszerűbb VAIO. Műszaki adatok SVE1111M1E. Termékek Áruházak Támogatás Közösség My Sony. Képek. Operációs rendszer.

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

RÉSZLETES ÁRAJÁNLAT. Nettó egységár. Megajánlott termék gyártmánya és típusa. Mennyiség egysége (db) Nettó összár. Mennyiség

Útmutató a Computer Setup (F10) segédprogram használatához dx2300 minitorony

Teszt Az nvidia GeForce VGA kártyák gyakorlati teljesítménye a Dirt3-ban

Valósidejű térbeli megjelenítés, másként Fehér Krisztián

NOLLEX Nemzetközi Kft. Magyarországi kizárólagos disztribútor.

*#Discount~ Kaspersky Internet Security - multidevice 2015 best software to buy for mac ]

Bevezetés. Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar

Utolsó módosítás:

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

TUDOMÁNYOS ADATBÁZISOK MA ÉS A JÖVŐBEN. X64 ALAPÚ KISZOLGÁLÓ RENDSZEREK Tudomány Adatbázisok, 1. előadás, (c) 2010

Köszönjük, hogy a Conceptronic DVB-T USB-adaptert választotta.

USB adatgyűjtő eszközök és programozásuk Mérő- és adatgyűjtő rendszerek

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Sajtóközlemény Azonnali közlésre Budapest, június 21. Sony notebookok a mindennapokra Magasabbra teszi a mércét a VAIO E sorozat

A Toshiba és az Intel Centrino Duo mobileszköz-technológia az üzlet szolgálatában

Digitális Áramkörök (Villamosmérnök BSc / Mechatronikai mérnök MSc)

UNIX / Linux rendszeradminisztráció

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Intel Pentium G2020 Intel HD grafikus kártyával (2,9 GHz, 3 MB gyorsítótár, 2 mag)

Siklós, Felszabadulás u. 65. Telefon / Fax : 72/ Web:

Lenovo Ideapad YOGA3 PRO 80HE00MCHV (80HE00MCHV)

LowPrice

Általános célú számítási feladatok GPU-kon és DSP-ken való megvalósítása

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

Adatfolyam alapú RACER tömbprocesszor és algoritmus implementációs módszerek valamint azok alkalmazásai parallel, heterogén számítási architektúrákra

Átírás:

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

Vázlat Egy, (kettő,) sok. Bevezetés a sokszálas univerzumba. A párhuzamosok a végtelenben találkoznak, avagy a debugging egy életforma. A cél szentesíti az eszközt. Jelen architektúrák, és a jövő. En guard. Válasszunk fegyvert!

Serial >> Paralell Az egyszálas programok világában sok minden evidens, ami a párhuzamos programoknál korántsem az. Tudjuk hol tart a vezérlés és óvakodunk a szegmentálási hibától. Párhuzamos programok esetén ezek szintén igazak. (Részben )

Serial >> Paralell Minden többszálas program két részből áll: Kritikus csak egy szál hajthatja végre. (nem párhuzamosítható) Párhuzamos evidens. Akkor miért nincs párhuzamos program dömping?

Norbi titok Nem minden feladat párhuzamosítható. A párhuzamosíthatóságnak több szintje van. Nem annyira intuitív, mint a soros kód. Több idő kifejleszteni, és a program használati ideje: Tteljes = Tfejlesztési + Thasználati

Az ördög a részletekben Az előző ábránk szép és jó, csak éppen nem sugallja a quint essencia-ját a dolognak. Pseudocode: int main() { ciklushossz = 100; a[8] = 0; b = 1; #pragma fork(8) for(i = 0 ; i < ciklushossz ; ++i) a[threadid] += b; cout << Thread # << threadid << finished.\n ; #pragma join return 0; } user>./pelda user> Thread #3 finished. user> Thread #0 finished. user> Thread #6 finished. user> Thread #7 finished. user> Thread #2 finished. user> Thread #4 finished. user> Thread #1 finished. user> Thread #5 finished. user>./pelda user> Thread #0 finished. user> Thread #1 finished. user> Thread #5 finished. user> Thread #7 finished. user> Thread #3 finished. user> Thread #4 finished. user> Thread #2 finished. user> Thread #6 finished. user>

Az ördög visszatér És ha ez nem volna elég: Pseudocode: int main() { a = 0; b = 1; #pragma fork(2) a += b; cout << Thread # << threadid; cout << calculated << a << \n ; #pragma join return 0; } És ez még csak a kezdet user>./pelda user> Thread #0 calculated 1. user> Thread #1 calculated 2. user>./pelda user> Thread #1 calculated 1. user> Thread #0 calculated 2. user>./pelda user> Thread #1 calculated 2. user> Thread #0 calculated 1. user>./pelda user> Thread #1 calculated 1. user> Thread #0 calculated 1. user>

Bolyai János nyomában Tehát a párhuzamosok találkoznak. Szinkronizációs hibák debuggolása nem egyszerű feladat. Főleg hogy felismerni se mindig egyszerű. Megoldás: Think before you type! Legjobb védekezés a megelőzés! Soros kóddal kezdünk programozni, hogy igazoljuk a párhuzamos algoritmus helyességét.

Grafika a tudomány szolgálatában Grafikus kártyák programozásakor még körültekintőbben kell eljárnunk. A GPU célhardver, egy feladatra van kitalálva. Ez a feladat a képalkotás, nem az általános számítások. Akkor mégis hogyan lehet használni? Ismerni kell a kártyákat, a képességeit és a korlátaikat. Ha ennyire nem triviális, akkor miért csináljuk?

Teljesítmény [GFLOPS] Mert már Moore is megmondta 6000 CPU-GPU fejlődés 5000 4000 3000 2000 AMD NVIDIA CPU 1000 0 Egység Phenom X6 1055 Radeon HD6990 GPU/CPU Kapacitás (SP) *GFLOPS+ 74,8 5099 68,168 Kapacitás (DP) *GFLOPS+ 74,8 1276 17,058 Fogyasztás *Watt+ 125 375 3 Kapacitás:fogyasztás [GFLOPS/Watt] 0,5984 13,597 22,722

A Létező Erők

In memoriam Enrico Fermi Az első cgpu (compute GPU) Fejlett memória architektúra: többszintű olvasható/írható cache hierarchia. CUDA magok felépítése átmenet a CPU és a hagyományos árnyalók között. 1600 GFLOPS SP, 650 GFLOPS DP 3-6 GB VRAM / GPU

Cayman trópusok nélkül Javarészt grafika, kis tuning GPGPU-ra. Óriási árnyaló kapacitás. Kihasználása nehezebb, de nagyobb teljesítménnyel kecsegtet. Stream magok felépítése grafika orinteált, négyes vektor és mátrix műveletekre optimalizált. 2700 GFLOPS SP, 680 GFLOPS DP 1-2 GB VRAM / GPU (HPC dual-core)

Llano, egy csipetnyi Texas Első heterogén módon programozható APU. 4 processzormag, és 400 árnyaló processzort felvonultató egyveleg. CPU-ba épített masszív párhuzamos kapacitás.

Sandy Bridge, Izráel hídja Intel első lépése a heterogén programozhatóság felé. 4 processzormag és egy DirectX-képes integrált video vezérlő (IGP). A szoftveres támogatása és az IGP felépítése nem teszi alkalmassá GPGPU számításokra. A 22 nm-en készülő utód (Ivy Bridge) az IGP minőségére helyezi a hangsúlyt.

Hogy mit hoz a jövő?

GCN, Graphics Core Next Erősen átdolgozott architektúra, Fermihez hasonlatosan cgpu orientált. Újítások: vektor feldolgozók helyett skalár processzorok, teljes C/C++ támogatás (virtuális függvények, DLL, ), virtuális memória névtér CPU-val közösen, koherens memória CPU-val, aszinkron felépítés, új memória architektúra, 1:2 DP:SP kapacitás, 22 nm-es csíkszélesség, Várhatóan 2011 decemberében mutatkozik a nagyérdemű előtt.

In memoriam Johannes Kepler A lehető legnagyobb csend övezi az új generációs GPU-kat. Újítások többnyire spekulációk, fenntartással kezelendők. Valószínűleg: architekturálisan Fermire fog hasonlítani nagy mértékben, CUDA magok natív 64-bitesek lesznek (??). Biztosan 22 nm-re épül. Tape out fázis, várható megjelenés 2012 Q1.

Knight s Corner, lovagregény Az Intel egy sikertelen víziójának újragondolása. ~50 db x86 magot tartalmazó PCI-E foglalatba illeszkedő kártya. GPU-khoz hasonlóan on-board RAM-ot tartalmaz. 22 nm-es csíkszélesség. Megjelenés: 2012 Q?.

Most légy okos Domokos! Melyik lesz a befutó? Válasz: nem tudjuk. (Hitvallás kérdése) Najó, de akkor mégis melyiket válasszuk? Válasz: az attól függ Hordozható kódot akarunk, vagy teljesítmény orientáltat. A teljesítménybeli különbség a két verzió között nagyon feladat specifikus. (1-10X)

Az arzenál OpenCL: Apple kezdeményezés, ma már a Khronos.org kezelésében lévő nyílt szabvány. Párhuzamos alkalmazások közös nevezőjét definiáló, a gyártók saját implementációját igénylő szabvány. Platform független. DirectX: A Microsoft tulajdonában lévő API, amely gyártótól függetlenül kínál Windows alatt általános számításra alkalmas felületet (Compute Shader). C++ AMP: Szintén Microsoft kezdeményezés, ami a DirectXszel ellentétben platform független is. DirectX-képes hardverek számára kínál, C++ nyelvből elérhető, kényelmes párhuzamos program fejlesztői környezetet. CUDA: platform-független, gyártó-specifikus API, amivel NVIDIA kártyákat programozhatunk kényelmesen és hatékonyan. Alacsony szintű nyelv.

Mi lebegjen a szemünk előtt? GPU programming is all about organizing your data. Memory bandwidth is limited. Shader capacity is practically infinite. GPU-t (célhardvert) programozunk! Nem írok le olyat, amiről már akkor tudom hogy rossz, amikor begépeltem. Továbbá

Kerüljük ahol tudjuk: Szinkronizációt. CSAK akkor használjuk, ha algoritmikusan elkerülhetetlen. Atomic műveleteket. Szintén, csak ha elkerülhetetlen. Sok számítás árán is megéri kerülni. Adatmozgatást. Sávszélt ahol lehet árnyaló műveletre cserélünk. DIV, MOD, TRANS műveleteket. ALU-FETCH módok közötti váltást.

OpenCL szerkezet Platform CPU GPU Device GPU Device HOST CU RAM CU CU VRAM VRAM Context Kernel1 Device list Kernel2 Buffer1 Kernel3 Buffer2 Command Queue Command Queue Command Queue Command Queue Kernel4 Image1 Kernel5

Platformot választunk (1-et vagy többet is akár) Lekérdezzük a Device-ok listáját. Contextet hozunk létre 1 Deviceszal. Betöltünk egy Programot forrásból vagy binárisból. A programból Kernel függvényeket válogatunk. Lefordítjuk a Kerneleket Deviceokra. CommandQueue-t hozunk létre a contexthez. Memóriaobjektumokat hozunk létre Host-Device és Device-Device közti adatmozgatáshoz. CommandQueue-n keresztül indítjuk a kerneleket. Szükség szerint Eventekkel szinkronizálunk. Program felépítése

Köszönöm a figyelmet!