GPGPU-K És Programozásuk
Total Page:16
File Type:pdf, Size:1020Kb
GPGPU-k és programozásuk Dezső, Sima Sándor, Szénási Created by XMLmind XSL-FO Converter. GPGPU-k és programozásuk írta Dezső, Sima és Sándor, Szénási Szerzői jog © 2013 Typotex Kivonat A processzor technika alkalmazásának fejlődése terén napjaink egyik jellemző tendenciája a GPGPU-k rohamos térnyerése a számításigényes feladatok futtatásához mind a tudományos, mind a műszaki és újabban a pénzügyi- üzleti szférában. A tárgy célja kettős. Egyrészt megismerteti a hallgatókat a GPGPU-k működési elveivel, felépítésével, jellemzőivel, valamint a fontosabb NVIDIA és AMD GPGPU implementációkkal, másrészt a tárgy gyakorlati ismereteket nyújt az adatpárhuzamos programozás és kiemelten a GPGPU-k programozása, programok optimalizálása területén a CUDA nyelv és programozási környezetének megismertetésén keresztül. Lektorálta: Dr. Levendovszky János, Dr. Oláh András Created by XMLmind XSL-FO Converter. Tartalom I. GPGPU-k ........................................................................................................................................ 1 Cél .......................................................................................................................................... ix 1. Bevezetés a GPGPU-kba .................................................................................................... 10 1. Objektumok ábrázolása háromszögekkel ................................................................. 10 1.1. GPU-k shadereinek főbb típusai .................................................................. 11 2. Él- és csúcs shader modellek funkcióinak egybeolvadása ........................................ 12 3. Nvidia GPU-k és Intel P4 ill. Core2 CPU-k FP32/FP64 teljesítményének összehasonlítása [7] ................................................................................................................................. 14 4. AMD GPU-k csúcs FP32 teljesítménye [8] ............................................................... 15 5. GPU-k FP32 feldolgozási teljesítményének fejlődése [9] ........................................ 16 6. Nvidia GPU-k és Intel P4, Core2 CPU-k sávszélességének fejlődése [7] ................ 16 7. CPU-k és GPU-k főbb jellemzőinek összevetése [12] .............................................. 17 2. A GPGPU modell virtuális gép elve .................................................................................. 19 1. GPGPU-k virtuális gép modellje .............................................................................. 19 1.1. GPGPU-k virtuális gép modellje .................................................................. 19 1.2. Pseudo assembly kód hordozhatóságának előnyei ....................................... 19 1.3. Az alkalmazásfejlesztés fázisai - 1 ............................................................... 19 1.4. Az alkalmazás végrehajtásának fázisai - 2 ................................................... 20 1.5. Alkalmazások leírása eltérő absztrakciós szinteken ..................................... 20 2. GPGPU-kon alapuló masszívan adatpárhuzamos számítási modell ......................... 21 2.1. GPGPU-k specifikációja különböző absztrakciós szinteken ........................ 21 2.2. GPGPU-k virtuális gép szintű specifikációja ............................................... 22 2.3. Az GPGPU alapú masszívan párhuzamos adatfeldolgozási modell ............. 22 2.4. A GPGPU alapú masszívan párhuzamos számítási modellek térnyerése .... 22 2.5. A tárgyalt számítási modell kiválasztása ...................................................... 23 2.6. A használt terminológia kiválasztása ........................................................... 23 2.6.1. A GPGPU alapú masszívan párhuzamos adatfeldolgozási modellre SIMT (Single instruction Multiple Threads) számítási modell néven hivatkozunk. 23 2.6.2. A GPGPU alapú masszívan adatpárhuzamos számítási modellel kapcsolatos kifejezések megválasztása ......................................................................... 23 3. A SIMT számítási modell ......................................................................................... 24 3.1. A SIMT számítási modell főbb komponensei .............................................. 24 3.2. A számítási feladat modellje ........................................................................ 24 3.2.1. A szál modell ................................................................................... 25 3.2.2. A kernel modell ............................................................................... 29 3.3. A platform modellje ..................................................................................... 30 3.3.1. A számítási erőforrások modellje .................................................... 31 3.3.2. A memória modell ........................................................................... 35 3.4. A végrehajtási modell .................................................................................. 39 3.4.1. A SIMT végrehajtás elve ................................................................. 39 3.4.2. A feladat szétosztása a PE-k felé ..................................................... 43 3.4.3. Az adatmegosztás elve ..................................................................... 47 3.4.4. Az adatfüggő végrehajtás elve ......................................................... 48 3.4.5. A szinkronizáció elve ...................................................................... 50 4. GPGPU-k pseudo ISA szintű leírása ........................................................................ 51 4.1. Pseudo ISA-k leírása .................................................................................... 52 4.2. Mintapélda: Az Nvidia PTX virtuális gép pseudo ISA szintű leírása .......... 52 4.3. Mintapélda: Az Nvidia PTX virtuális gép pseudo ISA szintű leírása .......... 53 4.4. Nvidia számítási képesség (számítási képesség) elve [31], [1] .................... 54 4.5. a) A funkcionális jellemzők, vagyis a számítási képességek összehasonlítása egymást követő Nvidia pseudo ISA (PTX) verziókban [32] ............................... 55 4.6. b) Az eszközjellemzők fejlődésének összehasonlítása egymást követő Nvidia pseudo ISA (PTX) számítási képességekben [32] .............................................. 56 4.7. c) Számítási képességhez kötött architektúra specifikációk az Nvidia PTX-ben [32] .............................................................................................................................. 56 iii Created by XMLmind XSL-FO Converter. GPGPU-k és programozásuk 4.8. d) Natív aritmetikai utasítások végrehajtási sebessége az Nvidia PTX számítási képességeinek egymást követő verzióiban (utasítás / óraciklus/SM) [7] ............ 56 4.9. Egymást követő CUDA SDK-kkal megjelent PTX ISA verziók, valamint az általuk támogatott számítási képesség verziók (sm[xx]) (A táblázatban ez Supported Targets néven szerepel) [20] ............................................................................................ 57 4.10. Nvidia GPGPU magjai és kártyái által támogatott számítási képesség verziók [32] .............................................................................................................................. 58 4.11. A PTX kód előre hordozhatósága [31] ....................................................... 58 4.12. Egy megadott GPGPU számítási képesség verzióra fordított objektum fájlra (CUBIN file) vonatkozó kompatibilitási szabályok [31] .................................... 58 3. GPGPU magok és kártyák áttekintése ................................................................................ 59 1. Általános áttekintés ................................................................................................... 59 1.1. GPGPU magok ............................................................................................. 59 1.2. Az Nvidia duál-GPU grafikus kártyáinak főbb jellemzői ............................ 62 1.3. Az AMD/ATI duál-GPU grafikus kártyáinak főbb jellemzői ...................... 62 1.4. Megjegyzés az AMD alapú grafikus kártyákhoz [36], [37] ......................... 62 2. Az Nvidia grafikus magok és kártyák főbb jellemzőinek áttekintése ....................... 63 2.1. Az Nvidia grafikus magok és kártyák főbb jellemzői .................................. 63 2.1.1. Egy SM felépítése a G80 architektúrában ....................................... 64 2.1.2. Az Nvidia GPGPU kártyáinak pozicionálása a termékspektrumukon belül [41] ............................................................................................................ 67 2.2. Példák az Nvidia grafikus kártyáira ............................................................. 68 2.2.1. Nvidia GeForce GTX 480 (GF 100 alapú) [42] ............................... 68 2.2.2. Párba állított Nvidia GeForce GTX 480 kártyák [42] (GF100 alapú) 68 2.2.3. Nvidia GeForce GTX 480 és 580 kártyák [44] ................................ 69 2.2.4. Nvidia GTX 680 kártya [80] (GK104 alapú) ................................... 70 2.2.5. Nvidia GTX Titan kártya [81] (GK110 alapú) ................................ 70 3. Az AMD grafikus magok és kártyák főbb jellemzőinek áttekintése ........................ 71 3.1. Az AMD grafikus magok és kártyák főbb jellemzői .................................... 71 3.2. Példák AMD grafikus kártyákra .................................................................. 75 3.2.1. ATI HD 5970 (gyakorlatilag RV870 alapú) [46] ............................ 76 3.2.2. ATI HD 5970 (RV870 alapú) [47] .................................................