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

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

GPGPU. Architektúra esettanulmány

Grafikus csővezeték 1 / 44

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

Párhuzamos és Grid rendszerek

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

OpenCL - The open standard for parallel programming of heterogeneous systems

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

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

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

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

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

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

Google Summer of Code OpenCL image support for the r600g driver

Valasek Gábor

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

ARM processzorok felépítése

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

Grafikus csővezeték 2 / 77

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

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

Klár Gergely 2010/2011. tavaszi félév

Párhuzamos programozási platformok

OpenCL Kovács, György

Nagy adattömbökkel végzett FORRÓ TI BOR tudományos számítások lehetőségei. kisszámítógépes rendszerekben. Kutató Intézet

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Párhuzamos programozási platformok

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

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

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

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

Magas szintű optimalizálás

Heterogén számítási rendszerek

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

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

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

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

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

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek)

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

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

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

ARM Cortex magú mikrovezérlők

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

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

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

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

Utolsó módosítás:

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

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

Grafika programozása

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

Eichhardt Iván GPGPU óra anyagai

GPU-Accelerated Collocation Pattern Discovery

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

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

Eichhardt Iván GPGPU óra anyagai

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

Analitikai megoldások IBM Power és FlashSystem alapokon. Mosolygó Ferenc - Avnet

Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

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

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

Számítógép architektúrák I. Várady Géza

Nagy mennyiségű adatok elemzése és előrejelzési felhasználása masszívan párhuzamosítható architektúrával

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

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

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

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

Tartalom. Hajder Levente 2016/2017. I. félév

Számítógépes Graka - 4. Gyak

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

Mikrorendszerek tervezése

Heterogén számítási rendszerek gyakorlatok (2017.)

Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév

Hajder Levente 2016/2017.

Bevezetés a CGI-be. 1. Történelem

KISKER AKCIÓS ÁRLISTA

GPGPU programozás oktatása

Szakdolgozat. Dandár Gábor

Digitális Technika I. (VEMIVI1112D)

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

egy szisztolikus példa

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

1. Fejezet: Számítógép rendszerek

FIR SZŰRŐK TELJESÍTMÉNYÉNEK JAVÍTÁSA C/C++-BAN

KOGGM614 JÁRMŰIPARI KUTATÁS ÉS FEJLESZTÉS FOLYAMATA

2015. február 1-tıl visszavonásig, illetve a készlet erejéig érvényes

ios alkalmazásfejlesztés Koltai Róbert

Digitális Technika I. (VEMIVI1112D)

2016. június 1-tıl visszavonásig, illetve a készlet erejéig érvényes

Programmable Chip. System on a Chip. Lazányi János. Tartalom. A hagyományos technológia SoC / PSoC SoPC Fejlesztés menete Mi van az FPGA-ban?

Máté: Számítógépes grafika alapjai

Processzor (CPU - Central Processing Unit)

FELHASZNÁLÓI KÉZIKÖNYV 1.sz. melléklet

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

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

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

Féléves feladat. Miről lesz szó? Bemutatkozás és követelmények

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

Architektúra, cache. Mirıl lesz szó? Mi a probléma? Teljesítmény. Cache elve. Megoldás. Egy rövid idıintervallum alatt a memóriahivatkozások a teljes

Átírás:

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

Pipeline Az elvégzendő feladatot részfeladatokra bontjuk Mindegyik részfeladatot más-más egység dolgozza fel (ideális esetben) Minden egység inputja, a pipeline-ban őt megelőző egység outputja

Pipeline Ha elkészült egy egység a részfeladatával, akkor továbbadja az eredményt nem kell megvárnia, hogy befejeződjön a munka az egész munkadarabon n fázis (stage) bevezetése optimális esetben n-szeres gyorsulást jelent (felfutás után) Nem csak GPU! Már a Pentium IV-nek is 20 pipeline stage-e volt (egy GeForce 3-nak 6-800)

Pipeline Vigyázzunk: ha egy részfeladat sokáig tart, akkor az előtte és utána lévők hiába készülnek el, nem tudnak tovább dolgozni a pipeline sebességét a leglassabb komponense határozza meg

Pipeline application stage A CPU-n futó programunkat jelképezi, általános hw-n Feladata a kirajzolandó geometria előállítása (primitívek), és továbbadása a köv. fázisba. Ütközésvizsgálat, gyorsítási adatszerkezetek és műveletek megvalósítása (pl. frustum culling) a felhasználói input kezelése transzformációk módosítása/animálása

Pipeline geometry stage A per-vertex és per-poligon műveletek itt zajlanak (és ma már per-patch is) Egy ideje már GPU-n Funkcionálisan a következő alfázisokra bontható: Világ és nézeti transzformáció Vertex és geometry shading/tesszeláció Vetítés Vágás Képernyő leképezés (NDC képernyő (egész) pixelkoordinátái ff: DX9-ig hol a pixel közép...)

Pipeline geometry stage

Pipeline rasterizer stage Az előző fázis eredményének felhasználásával a feldolgozott primitív által lefedett pixelek színének kiszámítása...azaz a fragmentjeinek kiszínezése Per-pixel/fragment számítások helye Deriváltak stb. kiszámítása Bedrótozva a hw-be Fragment színének kiszámítása, textúrázás, megvilágítás stb. - programozható Color buffer-be illesztése a fragment Mely pixelek középpontjait fedi le a háromszög és adatok interpolációja - ez is bedrótozva a hw-be színének konfigurálható, de nem programozható (még...)

GPU implementáció Ahogy előző előadáson láttuk: bedrótozott konfigurálható programozható irányvonal mentén halad

GPU implementáció Programozható fázisok (shaderek): Vertex Geometry Tesselation Fragment Unified shading model óta ugyanolyan gpu magokon futnak (desktopon)

GPU implementáció

GPU implementáció párhuzamosítások FG = fragment generation FM = fragment merging

GPU implementáció párhuzamosítások Sort first: Cél: osszuk fel a képernyőt területekre, és az ezekbe eső primitívek egy olyan pipeline-ra kerülnek, amelyiké az adott terület Primitívek rendezése, geometriai fázis egy részét el kell hozzá végezni Ritka

GPU implementáció párhuzamosítások Sort middle: Ötlet: a raszterizálást csináljuk csak régiókra, tileokra bontva A primitív ahhoz/azokhoz a raszterizáló(k)hoz kerül(nek), aki(k)nek a tile-jába belemetsz Globális post-process effektek, amelyek tetszőleges pixel-szomszédságot igényelnek (motion blur stb.) problémásak ilyen architektúrán a tile-ok közti kommunikáció igénye miatt Pl.: Mali GPU-k

GPU implementáció párhuzamosítások Sort last fragment: FG után, de FM előtt jöjjön a rendezés egy fragment egy FM-hez kerül, ez az optimum Pl.: Playstation 3

GPU implementáció párhuzamosítások Sort last image: Tekinthető független pipeline-ok rendszerének is FG és FM után jön csak a rendezés A különböző objektumokat különböz processzorok dolgozzák fel

GPU implementáció - trükkök Z-culling: Ha nincs z adat módosítás Eldönteni, hogy a háromszög egy része az adott területen takarva lesz-e mélység alapján (közelítés háromszög csúcspontjainak mélysége stb. alapján) Early-Z: Fragment mélységi értéke alapján tudjuk még a drága fragment shader lefuttatása előtt, hogy a fragment shaderbe beérkező fragment takarva vane már Pontos mélységi érték alapján eldobás, ha takarva van

Vashöz közelebb

CPU felépítése Vezérlés és nem a nyers aritmetikai teljesítmény a hangsúlyosabb (ALU<32 ált.) A CPU-knál elsődleges egy-egy szál késleltetésének a minimalizálása Control Logic L2 Cache L3 Cache ALU L1 Cache ~ 25GBPS System Memory

GPU felépítése Kevesebb vezérlés, több ALU magonként High Bandwidth bus to ALUs On Board System Memory Simple ALUs Cache

ATI/AMD

AMD GPU Hardware Architecture AMD 5870 Cypress 20 SIMD engines 16 SIMD units per core Perhaad Mistry & Dana Schaa, Northeastern Univ 5 multiply-adds per functional unit (VLIW processing) 2.72 Teraflops Single Precision 544 Gigaflops Double Precision Source: Introductory OpenCL SAAHPC2010, Benedict R. Gaster 22

SIMD Engine One SIMD Engine A SIMD engine consists of a set of Stream s Stream cores arranged as a five way Very Long Instruction Word (VLIW) processor Up to five scalar operations can be issued in a VLIW instruction Scalar operations executed on each processing element Stream cores within compute unitmistry execute Perhaad & Danasame VLIW Schaa, Northeastern Univ One Stream Instruction and Control Flow T-Processing Element Branch Execution Unit Processing Elements General Purpose Registers Source: AMD Accelerated Parallel Processing OpenCL Programming Guide 23

NVIDIA

Nvidia GPUs - Fermi Architecture Instruction Cache GTX 480 - Compute 2.0 capability Warp Scheduler Warp Scheduler Dispatch Unit Dispatch Unit Register File 32768 x 32bit 15 cores or Streaming Multiprocessors (SMs) Each SM features 32 CUDA processors 480 CUDA processors Global memory with ECC SFU SFU CUDA SFU Dispatch Port Operand Collector Source: NVIDIA s Next Generation CUDA Architecture Whitepaper FP Unit Int Unit Result Queue Perhaad Mistry & Dana Schaa, Northeastern Univ SFU Interconnect Memory L1 Cache / 64kB Shared Memory L2 Cache 25

Nvidia GPUs Fermi Architecture SM executes threads in groups of 32 called warps. Instruction Cache Warp Scheduler Warp Scheduler Dispatch Unit Dispatch Unit Two warp issue units per SM Register File 32768 x 32bit Concurrent kernel execution Execute multiple kernels simultaneously to improve efficiency CUDA core consists of a single ALU and floating point unit FPU SFU SFU CUDA SFU Dispatch Port Operand Collector Source: NVIDIA s Next Generation CUDA Compute Architecture Whitepaper FP Unit Int Unit Result Queue Perhaad Mistry & Dana Schaa, Northeastern Univ SFU Interconnect Memory L1 Cache / 64kB Shared Memory L2 Cache 26

NVIDIA Kepler Teljes Kepler 15 SMX egységből áll és hat 64 bites memóriavezérlőből

SMX egység SMX = Streaming Multiprocessor, megnövelt duplapontosságú teljesítménnyel Multiprocesszor: valahány streamprocessor csoportja (Tesla = 8, Fermi = 2x16) Kepler-ben: 192 egyszeres pontosságú CUDA core SFU: special function unit a különleges dolgokhoz (inverse square root, sin, cos, transzcend fv közelítések stb.) Warp: 32 szál

SIMT Single Instruction, Multiple Thread Step lock-ban mennek az egy csoporthoz tartozó stream processorok, ugyanazt az utasítást hajtják végre, csak más adatokon

PowerVR

PowerVR Elsősorban mobileszközökhöz, de skálázható eszközök, GPGPU-t is támogatnak (CPU kisegítésére) Universal Scalable Shader Engine 1-2... 2-16 mag (és nő) 32x32-es tile-okra osztja a képernyőt Pl.: ipad, iphone, iakármi, Samsung Galaxy S, Tab, Wave I, II... Több infó: http://www.imgtec.com/powervr/insider/docs/powe

Tile alapú rajzolás

USSE

Tile Accelerator Vágás, vetítés, cull hagyományos szerelőszalagnál a vertex shadert hajtja végre

Image Synthesis Processor Tile-onkénti láthatóságvizsgálat (takarás) TSP = Texture and Shading Processor

PowerVR SGX Series5XT

ARM Mali

ARM Mali Nem csak GPU-kat gyártanak és nem csak mobileszközökre Mali 400 MP 1-4 magos Más Mali eszközökkel integrálható Pl.: Samsung Galaxy S2

Qualcomm Adreno

Qualcomm Adreno Pl.: HTC telefonok (Desire, Evo stb.) Ők is forradalmiak :

NVIDIA (megint)

Ultra low power GeForce

API-k

API-k OpenGL ES 1.0-3.0

API-k OpenVG Vektorgrafikákra Microsoft Direct3D Mobile