http://excel.fit.vutbr.cz
´ ´ Optimalizace distribuovaneho I/O subsystemu projektu k-Wave Ondˇrej Vysock´y*
Abstrakt ´ ´ ´ Prace se zab´yva´ ˇreˇsen´ım efektivn´ıho paraleln´ıho zapisu dat pro nastroj k-Wave, zab´yvaj´ıc´ı ´ ˇ se simulac´ı sˇ ´ıˇren´ı ultrazvuku. Tento nastroj je superpoˇc´ıtaˇcovou aplikac´ı, proto je spouˇsten ´ ´ ´ ´ ´ na souborovem systemu Lustre a vyˇzaduje paraleln´ı zpracovan´ı pomoc´ı MPI a zapis ve formatu ´ pro velke´ mnoˇzstv´ı dat (HDF5). V ramci ´ ´ prace ´ ˇ ı vhodnem teto byl navrˇzen zpusob zefektivnen´ ˚ ´ ˇ an´ ´ ı, kter´y je cˇ asteˇ ´ cneˇ implezapisu dat dle potˇreb k-Wave, pomoc´ı kumulace dat a pˇrerozdelov ´ a otestovan. ´ mentovan ˇ a´ slova: optimalizace — I/O — HDF5 — MPI — k-Wave — HPC Kl´ıcov ´ Pˇriloˇzene´ materialy: N/A *
[email protected], Fakulta informaˇcn´ıch studi´ı, Vysoke´ uˇcen´ı technocke´ v Brneˇ
1. Introduction Rychlost v´yvoje pevn´ych disk˚u v´yraznˇe zaost´av´a za v´yvojem procesor˚u [1], t´ım p´adem se I/O st´av´a u´ zkou cˇ a´ st´ı a zp˚usobuje v´yrazn´e zpomalen´ı cel´e aplikace. Proto je nutn´e syst´em cˇ ten´ı a z´apisu vyladit pro maxim´aln´ı zmenˇsen´ı rozd´ılu mezi I/O a v´ypoˇcetn´ı cˇ a´ st´ı. S t´ımto probl´emem se setk´av´a mnoho paraleln´ıch aplikac´ı, kter´e generuj´ı obrovsk´e mnoˇzstv´ı dat a je pro nˇe proto nutn´e tento probl´em ˇreˇsit. N´astroj k-Wave [2] slouˇz´ı k simulaci sˇ´ıˇren´ı ultrazvuku, cˇ ehoˇz se vyuˇz´ıv´a pˇredevˇs´ım v medic´ınˇe nebo pˇri zkoum´an´ı materi´al˚u. Z d˚uvodu vysok´e v´ypoˇcetn´ı a pamˇet’ov´e sloˇzitosti tˇechto simulac´ı mus´ı v´ypoˇcet prob´ıhat na superpoˇc´ıtaˇc´ıch. Prostˇred´ı poˇc´ıtaˇcov´ych cluster˚u je znaˇcnˇe specifick´e, pˇredevˇs´ım z d˚uvod˚u sd´ılen´ı prostˇredk˚u s ostatn´ımi uˇzivateli, d´avkov´eho zpracov´av´an´ı u´ loh nebo pro tento pˇr´ıpad z´asadn´ı z´apis dat na RAID diskov´a pole se souborov´ym syst´em lustre. V t´eto pr´aci se zab´yv´am MPI verz´ı n´astroje k-Wave, kter´y zapisuje v´ysledky simulace do HDF5 souboru.
Uveden´e n´astroje a prostˇred´ı byly vyvinuty nebo upraveny pro clustery a paraleln´ı aplikace, kter´ym umoˇznˇ uj´ı rychl´y paraleln´ı z´apis velk´eho mnoˇzstv´ı dat. Probl´emem je vˇsak rychlost z´apisu mal´eho mnoˇzstv´ı dat, jelikoˇz pˇr´ıstup k pevn´ym disk˚um je v tomto prostˇred´ı spojen s velkou reˇzi´ı, kter´a zcela degraduje rychlost mal´ych paraleln´ıch z´apis˚u. Rychlost z´apisu je pro k-Wave z´asadn´ı, jelikoˇz v pr˚ubˇehu simulace mohou b´yt vygenerov´any stovky gigabajt˚u dat. Rozloˇzen´ı zapisovan´ych dat mezi jednotliv´e procesy vˇsak m˚uzˇ e zp˚usobit n´ızkou rychlost z´apisu, kter´a zdaleka nedosahuje maxim´aln´ı moˇzn´e rychlosti, a spolu s t´ım roste doba cel´e simulace a tedy i jej´ı cena. M´ym ˇreˇsen´ım n´ızk´e rychlosti z´apisu mal´eho mnoˇzstv´ı dat je kumulace dat pˇred samotn´ym z´apisem. V pˇr´ıpadˇe aplikac´ı zapisuj´ıc´ıch data opakovanˇe v pr˚ubˇehu prov´adˇen´ı je pˇrirozen´ym zp˚usobem zvˇetˇsen´ı mnoˇzstv´ı dat na proces kumulace dat pˇres jednotliv´e iterace a z´apis aˇz po dosaˇzen´ı dostateˇcn´eho mnoˇzstv´ı dat. Pro jed-
nor´azov´y z´apis (kter´y vˇsak z hlediska cel´eho bˇehu aplikace neb´yv´a kritick´y), nebo nerovnomˇern´e rozloˇzen´ı dat mezi jednotliv´e procesy je moˇzn´e prov´est pˇreuspoˇra´ dan´ı dat s c´ılem zvˇetˇsit mnoˇzstv´ı dat na zapisuj´ıc´ı proces. Navrˇzen´y zp˚usob z´apisu je vyv´ıjen a optimalizov´an pro aplikaci k-Wave, ale v´ysledky t´eto pr´ace jsou pouˇziteln´e pro libovoln´e paraleln´ı aplikace s distribuovanou pamˇet´ı a cˇ ast´ym z´apisem.
´ na superpoc´ ˇ ıtac´ ˇ ıch 2. I/O subsystem Vstupnˇe/v´ystupn´ı syst´em se skl´ad´a z nˇekolika vrstev, pˇriˇcemˇz kaˇzd´a z nich z´asadnˇe ovlivˇnuje v´ykonnost paraleln´ıho I/O. • I/O hardware Vstupnˇe/v´ystupn´ı hardware je tvoˇren poli pevn´ych disk˚u, kter´a jsou propojena s v´ypoˇcetn´ımi uzly skrze storage servery. Nˇekter´e superpoˇc´ıtaˇce poskytuj´ı tak´e datov´a u´ loˇziˇstˇe tvoˇren´a magnetick´ymi p´askami, urˇcen´a pro z´alohu uˇzivatelsk´ych dat. • Paraleln´ı souborov´y syst´em Paraleln´ı souborov´y syst´em spravuje datov´y hardware. Typick´ym pˇr´ıkladem takov´eho syst´emu je Lustre [3], kter´y zcela oddˇeluje metadata od zbytku dat. Umoˇznˇ uje n´am pˇredevˇs´ım rozloˇzit data pˇres disky diskov´eho pole (pomoc´ı nastaven´ı stripov´an´ı), cˇ´ımˇz je zv´ysˇena reˇzie, ale pˇredevˇs´ım pr˚uchodnost paraleln´ıho z´apisu a cˇ ten´ı. • I/O forwarding I/O forwarding smˇeruje vstupnˇe/v´ystupn´ı poˇzadavky na dedikovan´e I/O uzly, kter´e je pˇresmˇerov´avaj´ı na paraleln´ı souborov´y syst´em. Poˇzadavky jsou zde pˇreskl´ad´any a n´aslednˇe agregov´any s c´ılem sn´ızˇ it latenci syst´emu [4]. Tato vrstva je vˇsak pˇr´ıtomn´a jen na nˇekter´ych z nejvˇetˇs´ıch superpoˇc´ıtaˇcov´ych syst´emech a je typicky u´ zce spojen´a hardwarem [4][5]. • I/O middleware V pˇr´ıpadˇe vyuˇz´ıv´an´ı Message Passing Interface (MPI) a paraleln´ıho I/O, je na t´eto u´ rovni MPII/O standart. Stejnˇe jako MPI standart, tak´e MPI-I/O m´a mnoho implementac´ı, nejrozˇs´ıˇrenˇejˇs´ı z nich je ROMIO [6]. • Vysoko´urovˇnov´a I/O knihovna Pro paraleln´ı z´apis je moˇzn´e vyuˇz´ıvat nˇekterou z implementac´ı MPI-I/O, avˇsak nad touto vrstvou jsou postaveny jeˇstˇe vysoko-´urovˇnov´e I/O knihovny, kter´e kromˇe z´apisu pomoc´ı MPI-I/O pˇrin´asˇ´ı nav´ıc tak´e spr´avu metadat, optimalizaci pro z´apis do pˇrekr´yvaj´ıc´ıch se datov´ych oblast´ı nebo
´ Obrazek 1. Vrstvy I/O subsyst´emu
na superpoˇc´ıtaˇc´ıch [5]. souˇcasn´y z´apis a cˇ ten´ı r˚uzn´ymi procesy a mnoho dalˇs´ıch. Pˇr´ıkladem takov´ychto knihoven jsou netCDF [7] nebo HDF5 [8]. Je nezbytn´e m´ıt na mysli, zˇ e kaˇzd´a uveden´a vrstva m´a mnoho nastaven´ı a uˇzivatel by mˇel, dˇr´ıve neˇz zaˇcne optimalizovat sv˚uj k´od, naj´ıt vhodn´e nastaven´ı vrstev pˇredchoz´ıch. 2.1 HDF5 The Hierarchical Data Format (HDF) je samo-popisn´y souborov´y form´at pro usnadnˇen´ı pr´ace a uloˇzen´ı v´yzkumn´ych dat nez´avisle na operaˇcn´ım syst´emu a architektuˇre poˇc´ıtaˇce. V projektu k-Wave je vyuˇz´ıv´ana knihovna HDF5 pro svou komplexnost. Vyuˇz´ıv´ame toho, zˇ e HDF5 soubor je kontejnerem pro HDF5 objekty, coˇz znamen´a, zˇ e v jednom souboru m˚uzˇ e b´yt uloˇzeno nˇekolik samostatn´ych datov´ych celk˚u (dataset˚u) a pˇredevˇs´ım zˇ e poskytuje jednoduch´y efektivn´ı paraleln´ı z´apis do souboru pomoc´ı hyperslab˚u, kter´e vymezuj´ı prostor v datasetu pro data kaˇzd´eho zapisuj´ıc´ıho procesu.
3. Projekt k-Wave V k-Wave se pracuje s tˇr´ı-dimenzion´aln´ım prostorem, v kter´em se vypoˇc´ıt´av´a pr˚ubˇeh sˇ´ıˇren´ı ultrazvuku. Tato dom´ena je rozdˇelena mezi jednotliv´e procesy, a to rozdˇelen´ım jedn´e z dimenz´ı tak, jak je tomu zn´azornˇeno na obr´azku 2. Jelikoˇz nen´ı nutn´e ukl´adat veˇsker´a data, definujeme takzvanou senzorovou masku, kter´a n´am ud´av´a pozice v dom´enˇe, kter´e budeme ukl´adat. T´ımto zp˚usobem doˇslo k nerovnomˇern´emu rozloˇzen´ı dat na z´apis mezi jednotliv´e procesy, kdy nˇekter´e procesy nezapisuj´ı v˚ubec, jin´e procesy naopak mohou spravovat (a zapisovat) nˇekolikan´asobnˇe v´ıce dat neˇz jin´e. Jelikoˇz kolektivn´ı paraleln´ı z´apis je blokuj´ıc´ı operac´ı, nen´ı moˇzn´e pokraˇcovat ve v´ypoˇctu, dokud neza-
procesy nezapisuj´ı v˚ubec. Probl´emem jsou pˇredevˇs´ım nˇekter´e tvary subdom´en, pˇridˇeluj´ıc´ı na proces mal´e mnoˇzstv´ı dat na z´apis. Tyto mal´e z´apisy vykazuj´ı vysokou reˇzii, kter´a zp˚usobuje velmi pomal´y z´apis. Jelikoˇz kolektivn´ı z´apis je blokuj´ıc´ı operac´ı, nen´ı moˇzn´e pokraˇcovat ve v´ypoˇctu, dokud nezap´ısˇe data nejpomalejˇs´ı z proces˚u. A protoˇze pro anal´yzu v´ysledk˚u simulace je nutn´e uloˇzit data z velk´eho mnoˇzstv´ı iterac´ı, st´av´a se z´apis dat v´yznamnou cˇ asovˇe n´aroˇcnou operac´ı, kter´a vyˇzaduje optimalizaci.
´ Obrazek 2. Simulaˇcn´ı dom´ena rozdˇelen´a mezi
procesy s 3 subdom´enami. p´ısˇe data nejpomalejˇs´ı z proces˚u. A protoˇze pro anal´yzu v´ysledk˚u simulace je nutn´e uloˇzit data z velk´eho mnoˇzstv´ı iterac´ı, st´av´a se z´apis dat v´yznamnou cˇ asovˇe n´aroˇcnou operac´ı, kter´a vyˇzaduje optimalizaci. V mnoha simulaˇcn´ıch n´astroj´ıch je I/O velmi pomal´e (vstupnˇe/v´ystupn´ı operace nedosahuje maxim´aln´ı moˇzn´e rychlosti), aˇc vˇsechny procesy zapisuj´ı (respektive cˇ tou) velk´e mnoˇzstv´ı dat. Tento probl´em vznik´a u aplikac´ı s vysokou dimenzionalitou dat, kde je pamˇet’ov´a oblast rozdˇelena podle nejvyˇssˇ´ı dimenze, tud´ızˇ na m´ısto jedin´eho poˇzadavku na velk´e mnoˇzstv´ı dat vznik´a mnoho menˇs´ıch poˇzadavk˚u.
´ 4. Paraleln´ı zapis v k-Wave V paraleln´ıch aplikac´ıch existuje trojice vzor˚u pro z´apis. Prvn´ım z nich je z´apis jedin´ym z proces˚u. D´ale je zde moˇznost, kdy kaˇzd´y proces zapisuje do samostatn´eho souboru, a tˇret´ım zp˚usobem je paraleln´ı z´apis do jedin´eho sd´ılen´eho souboru. Kaˇzd´a z variant m´a sv´e v´yhody i nev´yhody, my se vˇsak budeme zab´yvat pouze posledn´ı variantou, kter´a n´am umoˇznˇ uje snadn´y post-processing a spr´avu soubor˚u (v porovn´an´ı s variantou generuj´ıc´ı N soubor˚u v kaˇzd´em bˇehu aplikace), ale vyˇzaduje synchronizaci proces˚u pˇri nastaven´ı pˇr´ıstupu k souboru a vykazuje n´ızkou propustnost pˇri z´apisu mal´ych datov´ych celk˚u. V k-Wave simulace prob´ıh´a v tˇr´ıdimenzion´aln´ım prostoru, ve kter´em se vypoˇc´ıt´av´a pr˚ubˇeh sˇ´ıˇren´ı ultrazvuku. Tato dom´ena je distribuov´ana mezi jednotliv´e procesy rozdˇelen´ım jedn´e z dimenz´ı. Jelikoˇz nen´ı nutn´e ukl´adat data v cel´e dom´enˇe, definujeme senzorovou masku, coˇz je seznam index˚u ud´avaj´ıc´ı pozice obaluj´ıc´ı oblasti z´ajmu. V kaˇzd´em kroku simulace se pak ukl´adaj´ı nov´e hodnoty na pozic´ıch oznaˇcen´ych senzorovou maskou, coˇz z hlediska z´apisu znamen´a, zˇ e rozloˇzen´ı zapisovan´ych dat mezi procesy nen´ı rovnomˇern´e a nˇekter´e
5. Optimalizace Nov´y optimalizovan´y I/O subsyst´em projektu k-Wave je zaloˇzen na pˇreuspoˇra´ d´an´ı dat mezi procesy a na kumulaci pˇres jednotliv´e iterace, coˇz jsou zp˚usoby zvˇetsˇen´ı mnoˇzstv´ı dat na z´apis. V pˇr´ıpadˇe nerovnomˇern´eho rozloˇzen´ı dat nav´ıc doch´az´ı k pˇreuspoˇra´ d´an´ı dat s c´ılem minimalizovat tyto rozd´ıly. Pˇri nastavov´an´ı parametr˚u nejprve dojde k rozdˇelen´ı proces˚u do skupin. Skupiny tvoˇr´ı procesy se stejn´ym mnoˇzstv´ım dat na z´apis rozˇs´ıˇren´e o okrajov´e procesy, kter´e mohou m´ıt dat m´enˇe. D´ale dojde k vyhled´an´ı skupiny, v n´ızˇ pˇripad´a na jednotliv´e procesy nejvˇetˇs´ı mnoˇzstv´ı dat. Ve snaze minimalizovat rozd´ıly v mnoˇzstv´ı dat na zapisuj´ıc´ı procesy je ve zbyl´ych skupin´ach urˇcen poˇcet proces˚u z dan´e skupiny, kter´e by mˇely sb´ırat data od okoln´ıch proces˚u ze skupiny pomoc´ı funkce MPI Gatherv() a z´ıskat tak podobn´e mnoˇzstv´ı jako procesy s nejv´ıce dat. Pokud ve vˇsech skupin´ach st´ale pˇripad´a na zapisuj´ıc´ı procesy mal´e mnoˇzstv´ı dat (do stovek kilobajt˚u) a je z´aroveˇn moˇzn´e ve vˇsech skupin´ach zredukovat poˇcet zapisuj´ıc´ıch proces˚u na polovinu aˇz osminu, pak doch´az´ı k t´eto redukci zapisuj´ıc´ıch proces˚u a tady ke zvˇetˇsen´ı mnoˇzstv´ı dat na tyto procesy. Dle poˇctu zapisuj´ıc´ıch proces˚u ve skupin´ach jsou nastaveny parametry funkce MPI Gatherv() a je vytvoˇren nov´y MPI komunik´ator poj´ıc´ı procesy z dan´e skupiny, kter´e pos´ılaj´ı sv´a data jedin´emu zapisuj´ıc´ımu procesu. Dalˇs´ı komunik´ator je vytvoˇren tak´e pro zapisuj´ıc´ı procesy. Pˇrepos´ıl´an´ı dat mezi procesy bˇehem simulace prob´ıh´a na z´avˇer kaˇzd´e iterace, ale z´apis nikoli, jelikoˇz je prov´adˇena tak´e kumulace dat pˇres nˇekolik iterac´ı. Z´akladem pro urˇcen´ı ide´aln´ıho poˇctu kumuluj´ıc´ıch iterac´ı je testovac´ı aplikace, kter´a vyzkouˇs´ı na dan´em v´ypoˇcetn´ım clusteru z´apis r˚uzn´eho mnoˇzstv´ı dat na proces. P˚uvodn´ım pˇredpokladem bylo urˇcit, pˇri jak´em mnoˇzstv´ı dat dos´ahneme s dan´ym poˇctem proces˚u maxim´aln´ı rychlosti, a pot´e kumulovat data pˇres jednotliv´e iterace, dokud nedos´ahneme odpov´ıdaj´ıc´ıho mnoˇzstv´ı. To se vˇsak uk´azalo jako myln´e, jelikoˇz z´apis je z´asadnˇe
ovlivnˇen dimenzionalitou dat (kumulac´ı v cˇ ase rozsˇiˇrujeme druhou dimenzi). Proto testovac´ı aplikace musela b´yt modifikov´ana tak, zˇ e pro jednotliv´e mnoˇzstv´ı dat prov´ad´ı kumulaci pˇres jednotliv´e iterace, stejnˇe jako je tomu v optimalizovan´e aplikaci. Poˇcet kumuluj´ıc´ıch iterac´ı se zvˇetˇsuje, dokud vede k rychlejˇs´ımu z´apisu. V´ysledn´a rychlost z´apisu a ide´aln´ı poˇcet kumuluj´ıc´ıch iterac´ı je zaznamen´an do xml souboru, kter´y je vstupem k-Wave 1 . Dle vstupn´ı anal´yzy kaˇzd´a skupina proces˚u urˇc´ı ide´aln´ı poˇcet kumuluj´ıc´ıch iterac´ı, pot´e dojde k nalezen´ı minim´aln´ıho poˇctu mezi skupinami, aby tento parametr byl synchronizov´an a byl umoˇznˇen kolektivn´ı paraleln´ı z´apis. T´ımto zp˚usobem byl optimalizov´an z´apis v´ystupn´ıch dat oznaˇcen´ych pomoc´ı senzorov´e masky. Vyuˇzit´ı senzorov´e masky vˇsak zp˚usobuje probl´emy pˇri n´asledn´em zpracov´an´ı v´ystup˚u, kdy se data naˇc´ıtaj´ı po jednotliv´ych indexech dan´ych maskou. Pro zlepˇsen´ı rychlosti zpracov´an´ı v´ystupn´ıch soubor˚u je proto nutn´e nahradit senzorovou masku takzvan´ymi kuboidy, subdom´enami ve tvaru kv´adru obaluj´ıc´ımi oblast z´ajmu. Toto ˇreˇsen´ı oznaˇcen´ı dat pro z´apis vede obecnˇe k vˇetsˇ´ımu mnoˇzstv´ı ukl´adan´ych dat, protoˇze nejsme schopni definovat libovoln´y tvar subdom´eny, ale umoˇzn´ı naˇc´ıt´an´ı dat po bloc´ıch, coˇz je v´yraznˇe rychlejˇs´ı. Z´apis pomoc´ı kuboid˚u pˇrin´asˇ´ı do problematiky nˇekolik zmˇen. Kaˇzd´y kuboid je v r´amci v´ystupn´ıho souboru zaps´an do samostatn´eho datasetu a pro umoˇznˇen´ı paraleln´ıho z´apisu do nˇekolika nez´avisl´ych kuboid˚u je nutn´e vytvoˇrit pro kaˇzd´y kuboid samostatn´y MPI komunik´ator. Z hlediska optimalizace z´apisu v tomto pˇr´ıpadˇe nemus´ıme vyhled´avat skupiny proces˚u, jelikoˇz ty jsou nyn´ı d´any jednotliv´ymi kuboidy. Z´aroveˇn je moˇzn´e vyuˇz´ıt toho, zˇ e vˇsechny kuboidy maj´ı vlastn´ı komunik´ator. Proto nen´ı nutn´e synchronizovat z´apis vˇsech subdom´en na shodn´e iterace, ale je minim´alnˇe vhodn´e nastavit poˇcet kumuluj´ıc´ıch iterac´ı tak, aby subdom´eny s delˇs´ı periodou kumulace byly zapisov´any v n´asobc´ıch period subdom´en s cˇ astˇejˇs´ım z´apisem, aby nedoch´azelo k zbyteˇcn´emu vz´ajemn´emu blokov´an´ı. Pro z´apis optimalizovan´y pomoc´ı kumulace dat pˇre jednotliv´e iterace je nutn´e spolu s bufferovan´ymi daty rozˇs´ıˇrit tak´e HDF5 chunk, definuj´ıc´ı nejmenˇs´ı zapisovatelnou jednotku do HDF5 soubor˚u. Mal´y chunk tedy dˇel´ı v´ysledn´y z´apis do ˇrady menˇs´ıch a degraduje tak veˇsker´y pˇr´ınos z´ıskan´y kumulac´ı dat.
1 Pˇri
spuˇstˇen´ı simulace bez I/O anal´yzy dan´eho poˇc´ıtaˇce nen´ı z´apis nijak optimalizov´an.
´ Obrazek 3. Graf srovn´avaj´ıc´ı rychlost z´apisu v
nativn´ı podobˇe a po optimalizaci.
6. Testy N´asleduj´ıc´ı testy byly provedeny na superpoˇc´ıtaˇci Salomon v Ostravˇe a zkoumaj´ı moˇzn´e pˇr´ıpady subdom´en uvnitˇr dom´eny o velikosti 512 x 512 x 512, kter´a byla zpracov´av´ana pomoc´ı 256 proces˚u. Kaˇzd´a ze simulac´ı prob´ıhala po dobu 1000 iterac´ı, ve kter´ych byla generov´ana data pro z´apis. Veˇsker´e testy byly zaloˇzeny v´yhradnˇe na oznaˇcen´ı subdom´en pomoc´ı senzorov´e masky, jelikoˇz implementace kuboid˚u nebyla dosud dokonˇcena. Volba podoby subdom´en vych´az´ı z bˇezˇ n´ych poˇzadavk˚u aplikace k-Wave, pˇriˇcemˇz se jedn´a pˇredevˇs´ım o pˇr´ıpady vykazuj´ıc´ı n´ızkou rychlost z´apisu. V uveden´ych pˇr´ıpadech byl zmˇeˇren cˇ as nejpomalejˇs´ıho procesu prov´adˇej´ıc´ıho z´apis a pˇrepoˇcten na rychlost. Jelikoˇz je v t´eto implementaci z´apis spojen s pˇresunem dat z pole vypoˇcten´ych hodnot do pole pro z´apis, jsou zmˇeˇreny tak´e cˇ asy vˇcetnˇe cˇ asu na pˇresun a pr´avˇe tyto cˇ asy jsou porovn´any pˇri v´ypoˇctu zrychlen´ı. Rychlost z´apisu v jednotliv´ych testech je vyobrazena na grafu 3. V testu #1 jsou definov´any oblasti z´ajmu jako tˇri rovnobˇezˇ n´e desky (512 x 512 x 1), kter´e pˇridˇeluj´ı data na z´apis vˇsem proces˚um, na kter´e tak pˇripad´a 12 kB. Doˇslo proto k redukci zapisuj´ıc´ıch proces˚u na 32 a n´aslednˇe se kumulovala data po dobu 15 iterac´ı, coˇz vedlo k 4,3n´asobn´emu zrychlen´ı z´apisu z rychlosti 1227 MB/s na 5254 MB/s. Jestliˇze doˇslo k otoˇcen´ı subdom´en tak, zˇ e data byla rozdˇelena pouze mezi tˇri procesy (Test#2), na kter´e tak pˇripadl 1 MB dat, z´ısk´av´ame zcela rozd´ılnou situaci. Takov´eto rozloˇzen´ı dat nen´ı nijak upravov´ano a doch´az´ı pouze ke kumulaci pˇres 9 iterac´ı. Tato optimalizace vedla ke zv´ysˇen´ı rychlosti z 1118 MB/s na pouh´ych 3359 MB/s (3n´asobn´e zrychlen´ı), avˇsak samotn´y optimalizovan´y z´apis probˇehl rychlost´ı 5129 MB/s. Dalˇs´ı test obsahoval opˇet tˇri desky, avˇsak tentokr´at kaˇzd´a z nich byla um´ıstˇena v polovinˇe jedn´e z dimenz´ı dom´eny (Test#3). Jedin´y z proces˚u tak zapisuje 1 MB, zat´ımco zbyl´e procesy pouze 8 kB. Jedn´a se
o velmi v´yrazn´e nerovnomˇern´e rozdˇelen´ı dat, proto optimalizac´ı doch´az´ı k redukci poˇctu zapisuj´ıc´ıch proces˚u na tˇri, kter´e zapisuj´ı kaˇzdou dev´atou iteraci. T´ımto zp˚usobem bylo z p˚uvodn´ı rychlosti 708 MB/s dosaˇzeno 4n´asobn´eho zrychlen´ı a rychlosti 2816 MB/s (samotn´y z´apis pak 4146 MB/s). Test#4 je zaloˇzen na subdom´enˇe tvoˇren´e kostkou 256 x 256 x 256 pˇridˇeluj´ıc´ı polovinˇe proces˚u 512 kB. Tento pˇr´ıpad vykazuje vysokou rychlost z´apisu jiˇz pˇri nativn´ım z´apise (4348 MB/s) a optimalizac´ı se tak nepodaˇrilo tento pˇr´ıpad zrychlit (4295 MB/s), ale d˚uleˇzit´e je, zˇ e nedoˇslo ani k negativn´ımu ovlivnˇen´ı rychlosti. Posledn´ı Test#5 je tvoˇren subdom´enami o rozmˇerech 64 x 64 x 64, 33 x 65 x 33 a 10 x 40 x 41 rozm´ıstˇen´ymi r˚uznˇe po dom´enˇe, tud´ızˇ tvoˇr´ı tˇri skupiny proces˚u s r˚uzn´ym mnoˇzstv´ım dat (32, 16 a 3 kB). Vyrovn´an´ı rozd´ıl˚u v mnoˇzstv´ı dat a kumulac´ı pˇres 15 iterac´ı vedlo k rychlosti 3036 MB/s, coˇz je v porovn´an´ı s pˇredchoz´ı rychlost´ı 457 MB/s zrychlen´ı 6,6 n´asobn´e.
´ er ˇ 7. Zav V´ysledkem t´eto pr´ace je zp˚usob optimalizace paraleln´ıho z´apisu pro superpoˇc´ıtaˇcov´e aplikace, kter´e opakovanˇe zapisuj´ı mal´e mnoˇzstv´ı dat na proces, tud´ızˇ nedosahuj´ı maxim´aln´ı moˇzn´e rychlosti z´apisu z d˚uvodu vysok´e m´ıry reˇzie, kter´a je s t´ımto z´apisem spojena. Pomˇer reˇzie v˚ucˇ i cel´emu z´apisu je sn´ızˇ en pomoc´ı zvˇetsˇen´ı mnoˇzstv´ı zapisovan´ych dat jejich kumulac´ı pˇres jednotliv´e iterace bˇehu aplikace. Poˇcet iterac´ı, pˇres kter´e se data kumuluj´ı, je urˇcen na z´akladˇe v´ystupu vytvoˇren´eho programu prov´adˇej´ıc´ıho I/O anal´yzu c´ılov´eho poˇc´ıtaˇce. Na uveden´ych testech byla pˇredstavena r˚uzn´a potenci´aln´ı rozloˇzen´ı dat, zp˚usobuj´ıc´ı pomal´y z´apis. Kromˇe pˇr´ıpadu, kter´y vykazuje vysokou rychlost jiˇz pˇri nativn´ım zp˚usobu z´apisu, doˇslo ve vˇsech zbyl´ych pˇr´ıpadech k razantn´ımu zrychlen´ı z´apisu. Ve vˇsech testech bylo dosaˇzeno minim´alnˇe rychlosti 2,75 GB/s, pˇricˇ emˇz zrychlen´ı bylo vˇzdy 3 aˇz 6,6n´asobn´e. Dosud neimplementovanou optimalizac´ı je zaveden´ı oznaˇcov´an´ı subdom´en pomoc´ı kuboid˚u, kter´e budou optimalizov´any podobnˇe jako pˇri vyuˇzit´ı sensorov´e masky, ale nav´ıc by mˇely pˇrin´est pˇredevˇs´ım rychlejˇs´ı post-processing. Vytvoˇren´y zp˚usob optimalizace by mohl b´yt v budoucnu doplnˇen neblokuj´ıc´ım kolektivn´ım z´apisem, avˇsak tento typ z´apisu je novinkou v MPI a v HDF5 jeˇstˇe nen´ı implementov´an. Alternativnˇe by mohl b´yt tento zp˚usob z´apisu doplnˇen o delegovan´e I/O uzly (pˇr´ıpadnˇe procesy), coˇz je vhodn´e ˇreˇsen´ı pro architektury poˇc´ıtaˇcu˚ s poˇctem jader na procesor, kter´y nedˇel´ı velikost simulaˇcn´ı dom´eny.
ˇ ´ ı Podekov an´ Tato pr´ace byla podporov´ana Ministerstvem sˇkolstv´ı, ml´adeˇze a tˇelov´ychovy z projektu IT4Innovations Na” tional Supercomputing Center – LM2015070“ pro podporu velk´ych v´yzkumn´ych infrastruktur, experiment´aln´ı v´yvoj a inovativn´ı projekty.
Literatura [1] Steve Fingerhut. Does storage break moore’s law? [online]. [cit. 2016-04-07]. [2] Treeby, B., Cox, B. k-wave a matlab toolbox for the time-domain simulation of acoustic wave fields. [online]. [cit. 2016-04-07]. [3] EOFS OpenSFS. [cit. 2016-04-07].
Lustre.
[online], 2015.
[4] Ohta, K., Kimpe, D., Cope, J., Iskra, K., Ross, R., Ishikawa, Y. Optimization techniques at the i/o forwarding layer. 2010. [5] Latham, R., Ross, R., Welch, B., Antypas, K. Parallel i/o in practice. [online]. [6] Romio. [online]. [cit. 2016-04-07]. [7] Unidata. netcdf. [online]. [cit. 2016-04-07]. [8] The HDF Group. The hdf5 home page. [online], 2015-11-12. [cit. 2016-04-07].