28. 6. 2012

Tulipán z holandska

Playstation Vita nám svojím jemne upraveným hárdvérom priamo z regála DATARTu jasne naznačila, že sa nám končia sladké časy unikátnych a super custom architektúr /PS4 bude vlastne 500 dolárový noťas vašej ségry v krabici s logom SONY/. PS1 a PS2 ešte dostali zákaznícke obvody, ktoré nikde inde nenájdete. PS3 to pokazila fackou do tváre v podobe GPU - RSX aka značne ostrúhanej bežnej NV 7800. Celé to musel zachrániť nejaký zázrak. O ten sa postaral Ken Kutaragi. Preklínaný CELL. Týmto článkom ho však definitívne rehabilitujem. Viete, sťažovať sa na CELL, že je ťažšie riaditeľný je ako nadávať na monopost F1, že v ňom neviete urobiť dve rýchle zákruty, bez toho aby ste sa nezabili. Špičkoví progiši na CELL nedajú dopustiť /napr. DICE - Frostbite engine/, zvyšok nadáva a ďalej jazdí na Fabii Junior /bez HDD, s DVD, so slabým CPU aka xcrap/.

Príbeh, ktorý sa skutočne stal. CPU aj GPU našej konzoly dostane vlastnú pamäťovú banku /NUMA - Non-Uniform Memory Access/, obídeme tým problém zahltenia zbernice a jednej kešky pri použití UMA pamäte /jedna veľká, spoločná banka/. Pri našom riešení sa budeme snažiť dostať pamäť čo najbližšie ku čipu. Nedáme tam preto žiadnu automatickú riadiacu logiku. Latencia je totiž obrovský, takmer neprekonateľný problém /rýchle registre CPU vs pomalé zbernice/. Našu pamäť musíme zavesiť na DMA kanál /"ručne" optimalizovaný tok dát/. DMA NUMA tiež umožnuje lepšie maskovať latenciu pri viacjadrových systémoch /multi-buffering/ oproti UMA postupom /viď Intel a jeho prefetching/. To všetko jednoznačne komplikuje programovanie podobného systému. Na strane druhej enormne dvíha efektivitu spracovanie veľkého objemu dát. Grafika alebo fyzikálna simulácia je tak náročná na design dátových súborov a následné transfery, že buď pôjdete cestou hrubého výkonu a stoviek spálených wattov, alebo cielene navrhnete architektúru na mieru nášho problému.

Presne takto sa narodil CELL procesor. Súčasť prvého PetaFlop superpočítača z roku 2008. Ja vám však dám rukolapnejší dôkaz toho, že CELL je skvelé CPU. Pomôžeme si oveľa novšou a revolučnou architektúrou Larrabee od Intelu. Pokus o mix GPU a CPU vlastností v jednom čipe /podobne ako CELL, alebo pripravované HSA od AMD/. Prečo vlastne Larrabee zlyhal ? Jeho UMA pamäť /riešenie mem subsystému/ tvrdo narazila pri zabezpečení efektívnej koherencie dát v hlavnej a vyrovnávacej pamäti. Ľudovo povedaná - úzky priemer výfuka dusil výkon motora. Poskytnem aj konkrétne čísla.

PowerCell 8i je/bol štandardnou súčasťou IBM Blade serverov. Špičková výkonnosť jeho ôsmych SPE jednotiek /central dual thread PPE jadro budem ignorovať/ je - 8x SPE @ 3.2GHz = 8 * 8 flops * 3.2GHz = 8 * 25.6 Gflops = 204.8 Gflops SP /single precision/. Ok. Teraz na tigra hodíme bežný SGEMM benchmark s veľkou 4kx4K matricou. Z mlynčeka nám vypadne aplikačne reálnych 202 GFLOPs /floating points operation per second/. CELL procesor v tomto prípade pracuje s 99% efektivitou. Žiadne mne známe CPU podobný výsledok v danom čase alebo pred ním nedosiahlo. Pre kompletnosť informácie konfigurácia s dvoma PowerCell 8i /16 x SPE/ má teoretických 409.60 GFLOPS a reálných 406.04 GFLOPS. Stále sme na 99% efektivity využitia výkonu.

Poďme na Larrabee /16 jadier na 2Ghz/. Ten istý test a veľkosť matrice sa rovná - 825 GLOPs /achieved 417 GFLOPS using half the cores on the prototype card, and reached 825 GFLOPS by enabling all the cores/, teda iba dvakrát viac ako 16 jadrový dual CELL PowerCell 8i. Poznámka na okraj /prečo "iba"/ počet spracovaných vektor inštrukcií na cyklus je pri Larrabee 4 krát vyšší ako pri CELL. Aká je však teoretická výkonnosť Larrabee architektúry ? Výpočet - 16 jadier @2.0GHz = 16 x 32 flops x 2.0GHz = 16 x 64 Gflops = 1024 Gflops /SP/. Efektívnosť v SGEMM teste je iba /tentoraz naozaj iba !!/ - cca 81%. A Intel to celé uložil k ľadu. UMA pamäť napriek snahe v tomto prípade zlyhala.

"Výsledky jasne ukázali, že CELL procesor poskytuje zďaleka najväčší hrubý výkon a efektivitu pre LBMHD výpočty a to aj napriek tomu, že špičkový výkon, trvale udržateľný výkon, alebo pamäťová priepustnosť je porovnateľná s ostatnými systémami /Intel, AMD, SUN/. Kľúčom k tajomstvu CELL procesora je aj schopnosť vysokooptimalizovanej kontroly nad tokom dát - medzi lokálnom pamäťou /LS/ SPE jednotiek a hlavnou pamäťou. Cenou za udivujúcou efektivitou čipu je obtiažnejšie programovacie prostredia, ktoré sa tak líši od štandardu. Každopádne práve schopnosti CELLu ukazujú na zásadné nedostatky existujúcich automatizovaných riešení a kontraproduktívných snáh programátorov o kompenzovanie týchto nedostatkov .. " - Lattice Boltzmann Simulation Optimization on Leading Multicore Platforms, International Parallel & Distributed Processing Symposium (IPDPS), 2008.