GPU alkalmazása az ALICE eseménygenerátorában Nagy Máté Ferenc MTA KFKI RMKI ALICE csoport ELTE TTK Fizika MSc Témavezető: Dr. Barnaföldi Gergely Gábor MTA KFKI RMKI ALICE csoport Elméleti Fizikai Főosztály OTKA: PD73596 és NK77816
Vázlat 1. Az ALICE csoport és a GRID hálózat 2. Szimulációk és az AliROOT programcsomag 3. Monte-Carlo generátorok 4. OpenCL és GPU architektúra 5. TRandom4 benchmark eredmények 6. Proton-proton szimulációk
ALICE és a GRID ALICE egyike a 3 CERN LHC óriáskísérletnek. A detektorokból érkező adatok feldolgozásához szuperszámítógép parkra van szükség. Olcsóbb és kezelhetőbb a probléma elosztott rendszerrel. A kísérlet tagjainak kötelező hozzájárulni a GRID rendszerhez.
Szimulációk & AliROOT A használt szimulációs környezet az AliROOT. A szimulált eredményeket összevetjük a valós mérési eredményekkel. Ha a modellek jóslatai egyeznek a valósággal, elfogadjuk őket. Cél: GPU gyorsítás (Graphical Processing Unit). GPU-król később
Motiváció Pb-Pb ütközés kontra p-p esemény. Azonos eseményszám mellett több mint 100X annyi valószínűség alapú folyamat.
AliROOT 2,7GB-os keretrendszer, több eseménygenerátort is magába foglal. Mindenkori verziója tartalmazza az aktuális ALICE detektor geometriáját.
Monte-Carlo generátorok Monte-Carlo szimulációnak nevezünk minden olyan eljárást, amelyben egymástól függetlenül generált véletlen számok határozzák meg a rendszer fejlődését, kimenetét. Az ilyen fizikai szimulációk eseményeit előállító modult hívjuk MC generátornak. Pszeudo random véletlen számok előnyösek a szimuláció reprodukálása miatt. A nagy léptékű mintavételezés miatt a gyorsaság centrális fontosságú.
Teljesítmény [GFLOPS] CPU és GPU 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
GPU architektúra 2700 GFLOPS SP 500 GFLOPS DP 1600 shader processzor Dupla pontosság mellett 1/5 kapacitás 2 GB VRAM / GPU Óriási shader kapacitás, alacsony fogyasztás 512 shader processzor Dupla pontosság mellett 1/2 kapacitás 3-6 GB VRAM / GPU Óriási cache méretek, széles memória sín 1600 GFLOPS SP 650 GFLOPS DP
Nyílt szabványú, gyártó- és platformfüggetlen programozási nyelv. A videokártyán futó program kényelmes módon C nyelven Platform Context Device list OpenCL Buffer1 Buffer2 RAM Command Queue CPU Device Image1 írható. A szabvány az eddigi törekvésekkel ellentétben csak a legfontosabb párhuzamos végrehajtási rutinokat biztosítja. Azt hogy a párhuzamos program hogyan illeszkedik az adott hardverre, az a fordító feladata. HOST CU Command Queue CU CU Command Queue GPU Device VRAM Command Queue GPU Device VRAM Kernel1 Kernel2 Kernel3 Kernel4 Kernel5
gpu001 Intel Core-i7 2.66GHz, 12GB DDR3 1333MHz RAM 3 db Radeon 5970, 6GB GDDR5 VRAM (1GB/mag)
AliROOT gyorsítás Cél: GPU gyorsítás véletlenszám generátorhoz. A ROOT matematikai osztálya 3 alap generátort definiál. Ezekből a Mersenne- Twister algoritmust használó TRandom3 a legelterjedtebb. Definiáltam egy új modult (TRandom4) amely GPU gyorsítással végzi a random szám generálást.
TRandom4 A gyorsabb működés érdekében nem lehet egyesével számot generálni. Egy RAM-ban lévő buffert tölt fel véletlen számokkal (~500k #). Kérésnél a bufferből másolja ki az eredményt. Esetszétválasztás lassítja, aszerint hogy a bufferben maradt-e annyi szám, amennyit kért a program. RAM-ból másolás plussz művelet a CPU implementációhoz képest. OpenCL miatt akár CPU-n is képes generálni.
Eredmények - Hisztogram
Eredmények Auto-korreláció
Eredmények - DieHard Átfogóbb vizsgálata a PRNGnek: DieHarder Lelke: Kolmogorov-Smirnov teszt, eloszlások hasonlóságáról nyilatkozik. Eredeti DieHard tesztekből kettő ismerten hibásat kivéve és egy újat hozzávéve Trandom3-4 minden teszten átment! 1 Diehard Birthdays test 2 Diehard Overlapping Permutations test 3 Diehard 32x32 Binary Rank test 4 Diehard 6x8 Binary Rank test 5 Diehard Bitstream test 6 Diehard OPSO test 7 Diehard OQSO test 8 Diehard DNA test 9 Diehard Count the 1s (stream) test 10 Diehard Count the 1s (byte) test 11 Diehard Parking Lot test 12 Diehard Minimum Distance (2D Spheres) test 13 Diehard 3D Spheres (minimum distance) test 14 Diehard Squeeze test 15 Diehard Sums test 16 Diehard Runs test 17 Diehard Craps test 18 Marsaglia and Tsang GCD test
Ráta [db/ns] Eredmények - Sebesség 3 2,5 2 1,5 1 0,5 0 Generálási ráta TRandom3 TRandom4 TRandom4 kernel teljes kernel Vizsgált PRNG Teljes generálási sebesség bő kétszer lassabb. Ok a túlságosan nagy overhead a feladat méretéhez képest. Kernel idő kevesebb, mint tizenhatod része a CPU verziónak.
TRandom3 TRandom4 Proton-proton szimuláció Detektor geometria nélkül, ötvenezer szimulált esemény transzverz momentum (pt), rapiditás (y) és azimut szög (j) szerinti eloszlásai.
Összefoglaló Cél: GPU gyorsítás írása az AliROOT keretrendszerhez Eddigi eredmények: Nyílt forrású PRNG átalakítása Modul-szerű integráció a ROOT keretrendszerbe Generátor teljesítmény és eloszlás vizsgálata Szimuláción keresztüli igazolása a generátor helyes működésének Konklúzió: Visszafelé kompatibilis modul(ok) beépítése nem lehetetlen. Az eredmények ígéretesek, érdemes folytatni az ez irányú törekvéseket.
Köszönöm a figyelmet!