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



Hasonló dokumentumok
A TMS320C50 és TMS320C24x assembly programozására példák

Grafikus csővezeték 1 / 44

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

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

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

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

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

Intelligens Autonom Kamera Modul (IAKM)

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

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

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

Adatok ábrázolása, adattípusok

Bepillantás a gépházba

Bevezető előadás Mikrórendszerek összahasonlítása.dsp bevezető

Programozható logikai vezérlő

egy szisztolikus példa

OpenGL és a mátrixok

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

Digitális rendszerek. Utasításarchitektúra szintje

Aritmetikai utasítások I.

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Processzor (CPU - Central Processing Unit)

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

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

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

1. tétel. A kommunikáció információelméleti modellje. Analóg és digitális mennyiségek. Az információ fogalma, egységei. Informatika érettségi (diák)

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

A 3D képgenerálás komplexitása

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

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

Nagy Gergely április 4.

Informatika érettségi vizsga

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

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

Digitális technika VIMIAA hét

Fixpontos és lebegőpontos DSP Számrendszerek

Szűrő architektúrák FPGA realizációjának vizsgálata

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

KOVÁCS BÉLA, MATEMATIKA I.

Informatika Rendszerek Alapjai

Digitális technika VIMIAA hét

Összetett feladatok megoldása

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

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

DSP architektúrák dspic30f család

Bevezetés az informatikába

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

GRAFIKA PROGRAMOZÁSA. Bemutatkozás és követelmények. Dr. Mileff Péter

Digitális technika VIMIAA01

Alapismeretek. Tanmenet

NEURONHÁLÓS HANGTÖMÖRÍTÉS. Áfra Attila Tamás

Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.

A mikroprocesszor felépítése és működése

E-Laboratórium 1 Kombinációs digitális áramkörök alkalmazása Elméleti leírás

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

3. Az elektronikus számítógépek fejlődése napjainkig 1

Cache, Cache és harmadszor is Cache

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.

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

Számítógépes grafika

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Osztályozóvizsga követelményei

Alapismeretek. Tanmenet

Tamás Ferenc: S-VGA monitorok

Grafikus csővezeték 2 / 77

erettsegizz.com Érettségi tételek

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

3D számítógépes geometria és alakzatrekonstrukció

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

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

"A tízezer mérföldes utazás is egyetlen lépéssel kezdődik."

Jelfeldolgozás a közlekedésben

Előadó: Nagy István (A65)

6.2. TMS320C64x és TMS320C67xx DSP használata

Mikrovezérlők II. Dr. Odry, Péter

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

Készítette: Nagy Tibor István

Összeadás BCD számokkal

IRÁNYÍTÁSTECHNIKAI ALAPFOGALMAK, VEZÉRLŐBERENDEZÉSEK FEJLŐDÉSE, PLC-GENERÁCIÓK

1. DIGITÁLIS TERVEZÉS PROGRAMOZHATÓ LOGIKAI ÁRAMKÖRÖKKEL (PLD)

Architektúra, megszakítási rendszerek

Alapismeretek. Tanmenet

Jacquard szövőgépe, vezérlési modulok használata 1805 lyukkártyás vezérlés

Törtek. Rendelhetőek nagyon jó szemléltethető eszközök könyvesboltokban és internetek is, pl:

Digitális Rendszerek és Számítógép Architektúrák (BSc államvizsga tétel)

Osztályozóvizsga és javítóvizsga témakörei Matematika 9. évfolyam

Bevezetés a programozásba. 5. Előadás: Tömbök

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

Bevezetés az informatikába

TARTALOMJEGYZÉK. 1. BEVEZETÉS A logikai hálózatok csoportosítása Logikai rendszerek... 6

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

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

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

4. Fejezet : Az egész számok (integer) ábrázolása

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

A fejlődés megindulása. A Z3 nevet viselő 1941-ben megépített programvezérlésű elektromechanikus gép már a 2-es számrendszert használta.

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

1. A Neumann-elvű számítógép felépítése

A szoftverfejlesztés eszközei

Átírás:

Általános célú számítási feladatok GPU-kon és DSP-ken való megvalósítása 1. Bevezetés Napjaink számítógépeiben szinte már kivétel nélkül megtalálhatók olyan különleges célprocesszorok, amelyek számítási képességei csak egy igen szűk területre vannak specializálódva. E processzorok létjogosultsága abban rejlik, hogy azt a szűk feladatkört, amit rájuk bíztak a tervezőés szoftverfejlesztő mérnökök, sokkal hatékonyabban tudják ellátni, mint ahogy azt a központi feldolgozó egység, vagyis a CPU tenné. Egy gép számítási teljesítményét e CPU-val szeretjük leginkább jellemezni; viszont a modern személyi számítógépekben már kozmopolitán módon elterjedt egyéb célprocesszorok fejlődése jogosan ingatja meg ezt a paradigmát! A fent említett részegységek a száraz megfogalmazással ellentétben pont azok, melyek a legtöbb élményt közvetítik a felhasználó felé: a hangkártya és a grafikus gyorsítókártya. Jelen írás készültekor már sok hír és bejelentés jelent meg a fizikai processzorokról (PPU), amelyek már 2006-ban, várhatóan videokártyákra integrálva fognak debütálni. E processzorok új életet hivatottak lehelni a valósidejű 3-dimenziós számítógépes grafikába azáltal, hogy komoly számításigényű fizikai kalkulációkat végeznek, mint amilyen az elasztikus testek dinamikája, a merev testek dinamikája, hidrodinamika, magas poligonszámú ütközés-detektálás, stb. Habár a felsoroltak közül a PPU rendelkezik a legszűkebb specializációval, magasfokú programozhatósága miatt a szerző úgy érzi, jó eséllyel szerepelhetett volna a cikkben, ha az egy évvel később íródott volna. 2. Hangkártyák Az e területen tevékenykedő kísérletező kedvűek inkább a grafikus kártyákon található GPU-val (Graphics Processing Unit grafikus feldolgozóegység) foglalkoznak, mivel a témánknak megfelelő hangkártyák elterjedtsége szinte jelentéktelen a modern grafikus gyorsítókártyákhoz képest, és habár a GPU-k piacán is igazából két gyártóról beszélhetünk a tárgyalt hangkártyák csak egyetlen cég kínálatában szerepelnek (kivéve a profiesszionális használatra tervezett kártyákat, ahol ez a technológia mélyebben gyökerezik). A Creamware 14 DSP-vel felszerelt stúdiókártyájának 2 GFLOPS-os teljesítménye 6 darab pentium II-esnek felelt meg, ha csak a számokat nézzük: de valójában sokkal gyorsabb volt Creative Sound Blaster X-Fi: a gyártó szerint a kártya lelke egy pentium IV-es teljesítményű DSP processzor ez már tömegtermék!

A hangkártyáknál szóban forgó technológia az általános, mikrokóddal programozható nagyteljesítményű DSP Digital Signal Processing, vagyis digitális jelfeldolgozó processzor (az első ilyen tömegcikkben, a Sound Blaster Live! hangkártyában is mikrokóddal programozható volt az EMU10k1 jelű DSP, bár sok tekintetben korlátozott is volt). A DSP-k speciális architektúrájú processzorok, melyek különleges támogatást biztosítanak az olyan algoritmusukhoz, amelyekből a DSP műveletek nagyrésze felépül. Egy ilyen algortimusépítőkocka, a DSP processzorok alapképessége a különböző tömbök elemeinek összeszorzása, majd a részszorzatok szummarizálása (lásd pl. a konvolúció művelet a szoftver szintjén). Ezt speciális, tömbkezelést támogató, és az adott műveletre testreszabott címgenerátor áramkörök nagyon nagy mértékben meggyorsítják (némely címgenerátor még körkörös címzésre is képes). A részösszegeket / részszorzatokat ún. késleltető logikákkal lehet visszavezetni (hozzáadni/beszorozni) a számolás késsőbi szakaszán oda, ahova kell az adott részeredmény ez pedig mindenféle beavatkozás nélkül fog bekövetkezni! Fontos megemlíteni, hogy a DSP processzorok pontossága több, mint a legtöbb feladathoz szükséges, sőt a magasabb fokú IIR (infinite impulse response) digitális szűrők pontatlanságra való érzékenysége meg is követeli, hogy a DSP processzorok belső precizitása kiváló legyen (természetesen a DSP processzor lebegőpontos számokkal dolgozik). A DSP processzorok emellett nagyszámú regiszterrel rendelkeznek; egyszerre több memóriaműveletet tudnak végezni; valamint párhuzamosan több lebegőpontos aritmetikai művelet elvégzésére képesek, mely műveletek általában ki is merülnek az összeadásban és szorzásban. (A DSP processzorok területén érdekes irányú fejlődést jelent a Texas Instruments TMS320C6000, TMS320C5000, valamint TMS320C28x platformja. Ezek gyakorlatilag ötvözni próbálják a DSP és az általános CPU architektúrákat. Még saját valósidejű operációs rendszert is kapott a platform, amit DSP BIOS-ra kereszteltek.) Az ilyen DSP-vel felszerelt hangkártyák számítási teljesítményének kiaknázása korántsem triviális feladat. Ha meg is oldanánk egy általánosabb probléma megfelelő formába kódolását, nem biztos, hogy a végeredményt a legmegfelelőbb módon tudjuk kinyerni. További kihívás, hogy a DSP egy olyan valósidejű rendszer, amelynek nem célja bár vannak kivételek! hogy gyorsabban végezze a dolgát, mint ahogy azt az élet rendje megköveteli. Vannak algoritmusok, amelyek nagyon szoros rokonságban vannak a DSP-vel. (pl képfeldolgozás) Sajnos azok, amelyek nem tartoznak ebbe a szoros rokonságba, szinte elérhetetlenül távolinak tűnnek. Mindazonáltal a probléma egyáltalán nem reménytelen vagyis hogy általánosabb számítási célokra használjunk egy DSP-t. Ezen a területen minden bizonnyal a GPU-kéhoz hasonló fejlődés várható. 3. Grafikus gyorsítókártyák Modern PC már nem képzelhető el valamilyen akár csökkentett képességű 3D-s gyorsítókártya nélkül; sőt, a videókártya szót már-már szinte kizárólag ilyen kártyák megnevezésére használjuk. E kártyák központi elemei a GPU-k, amelyek mára komplex és kifinomult architektúrájúvá fejldőtek, immár lassan 5 éve több tranzisztort tartalmaznak, mint az első pentium IV-es processzor! A GPU-k felhasználása általános célú számításokhoz nem újkeletű: azonban a GPU-k architektúrája korábban nem tette ezt célszerűvé. ( A professzionális területen itt is voltak kivételek:

pl. a Silicon Graphics InfiniteReality nevű megoldása, mely nagymértékben programozható volt, hasonlóan a modern GPU-khoz) A legfőbb probléma a fix grafikus pipeline architektúra volt: Tipikus kezdeti grafikus pipeline A kirajzolási folyamat statikusan definiált lépések követésével, beavatkozás nélkül zajlik le, és kimenetként pixeleket kapunk. Ez nem elég: nem szolgáltat hatékony megoldást, és nem is tudjuk a problémáinkat feladatainkat megfelelően megfogalmazni a GPU számára. A kártyák és az őket támogató szoftveres absztrakció (Direct3D, OpenGL) fejlődése nyomán ezt a szilíciumba égetett architektúrát lehetőségünk lett befolyásolni kis programocskákkal, amiket vertex shader-nek, illetve pixel shader-nek neveznek. Ezek az assembly-hez hasonlatos szintű nyelvek: bár a vertex shader inkább egy absztrakció, mint közvetlenül végrehajtott gépi kódú (GPU) utasítások sorozata, és ez is az óriási előnye: a viszonylag jó gyártó- és modellfüggetlenség. A pixel shader történelmében voltak nagyon csúnya inkompatibilitások, mert alacsonyabb szintű nyelv volt; talán mára már javult a helyzet. A pixel shaderek a vertex shaderekkel szemben több megkötést tartalmaznak (pl a logikai operátorok hiánya), ezért általános célú számításokra nagyobb előszeretettel alkalmazzák a vertex shadereket. A modern GPU-k programozható pipeline-ja Habár mindez a műszaki háttér 3-dimenziós geometria megjelenítését volt hivatott végezni, a shaderek (programok) segítségével már lehetőségünk kínálkozik kiaknázni a GPU-ba rejlő, olykor óriási számítási teljesítményt. A vertex programok maximális méretére elég súlyos korlátot helyeztek: eleinte ez 128 művelet volt, de a specifikáció legújabb verziójában (SM3 shader model 3) már 65536 utasításból állhat minden programunk. További fontos fejlődés precizitás a HDR (magas dinamikatartományú) képinformációk igénye miatt már 32-bites lebegőpontos színinformációkkal dolgozhatunk a pixel shaderek-ben. Ezek persze szép adatok, de sose szabad elfelejteni, hogy nem biztos, hogy mindenhol a legújabb és a legmodernebb GPU dolgozik. A vertex shader nyelvére minden okunk megvan úgy tekinteni, mint a GPU egy részének az ISA-jára (Instruction Set Architecture). A vertex shader-ek utasításkészlete viszonylag kicsi (nem a legújabb specifikációt tekintjük):

Művelet ARL MOV MUL Leírás Skalár betöltése Adat mozgatása Szorzás ADD Összeadás SUB Kivonás MAD Szorzás és összeadás ABS Abszolútérték RCP Reciprok RCC Reciprok (korlátos) RSQ Reciprok + négyzetgyök DP3 3 vektor skaláris szorzata DP4 4 vektor skaláris szorzata DPH Homogén skaláris szorzat DST Távolságvektor MIN Minimum MAX Maximum SLT Ha kisebb, akkor :=.. SGE Ha nagyobb egyenlő, akkor :=.. EXP 2 alapú exp LOG 2 alapú logaritmus LIT Fény együttható formula Természetesen az operandusok is megvannak: ezek olyan regiszterek, amelyekben egyenként egy lebegőpontos számnégyes van. Négyféle típusú regisztert különböztetünk meg: csak olvasható bemeneti attribútumregisztereket, csak írható kimeneti regisztereket, a csak olvasható konstansregisztereket és az átmeneti regisztereket. Habár bonyolult vezérlési szerkezeteket nem tudunk megvalósítani ezzel a nyelvvel, az SLT és SGE utasítások elég sokat segíthetnek rajtunk, hasonlóan a Pentium II-es CMOV utasításaihoz. Végül az alábbiakban látható pár, a Washingtoni Egyetem által végzett összehasonlítás egy 1.5GHz-es Pentium IV-es gép CPU-ja és egy Geforce4 Ti4600 GPU-ja között. Aritmetikai teszt. Egy vektor minden elemére kiszámolásra kerül a log(πx 3 ) kifejezés. Nagy vektorok esetén a GPU több, mint 6-szor jobban teljesít, mint a CPU. Mátrixszorzás. 1500X1500-as mátrix esetén a GPU 3.2-szer gyorsabb, mint a CPU

4. Konklúzió A számítógépünkben található speciális feladatokat ellátó célhardverek olyan fejlődésen mentek keresztül, hogy némely esetben általánosabb számítási feladatokban is jóval túlteljesítik a CPU-t. Tény és való, hogy a jelenség átlépte azt a küszöböt, hogy megérje vele foglalkozni, de még így is nyitva van számos elméleti és gyakorlati kérdés. De miért is ne használjuk ki a gépünkben lakozó rejtett teljesítménytöbbletet, különösen, ha az igen jelentős? Azoknak, akiknek felkeltettem az érdeklődését, ajánlom a gpgpu-s közösséget: http://www.gpgpu.org/ Nyári Zoltán