Sokszor a tervezőszoftver beszerzésével együtt, vagy egy frissítéskor merül fel a kérdés, hogy mégis milyen hardvert kellene „alátenni”, hogy az jól és gyorsan fusson. Mivel termelőeszközökről van szó, a sebesség jelentős hatással van a produktivitásra, így a megfelelő válasznak értéke van. Különösen igaz ez a szimulációk esetében, ahol egy-egy számítás gépideje arányaiban igen nagy lehet, így a számítási teljesítmény gyökeresen meghatározza a kimenetet. Ebben a blogbejegyzésben a fenti kérdés egyes aspektusait járjuk körül az asztali áramlástani szimulációs szoftverünk, a Flow Simulation kapcsán.
MILYEN HARDVERT VÁLASSZUNK Szimulációs vizsgálatokhoz
Vannak olyan teljesítményt befolyásoló hardverkomponensek, amikről egyszerű dönteni: a nagy sebességű (NVMe-csatolós), megfelelő méretű (min. kb. 512 GB) SSD-k kellően olcsóak ahhoz, hogy ne kelljen túl sokat alternatívákon gondolkodni. A videokártya a grafikus kiértékelésnél számít, ám magában a számításban nem, így azt a tervezés igényeihez javasoljuk illeszteni (elsősorban alkatrészszám alapján).
A memória kapcsán az elsődleges kérdés a mennyiség: annyi kell, amennyi elég. A faramuci megfogalmazás azt jelenti, hogy ha minden szoftver, és az általuk kezelt adatok is elférnek a RAM-ban, akkor önmagában a plusz memóriától nem lesz gyorsabb a gép, abból nem tud többet „kihasználni”. Ha viszont túl kevés áll rendelkezésre, azt meg fogjuk érezni: ilyenkor az operációs rendszer a háttértárra kezdi kiírni a túlcsorduló adatokat (ez a jelenség a swap). Mivel a legkorszerűbb SSD-k sebessége is nagyságrendileg kisebb, mint a rendszermemóriáé, a teljesítmény drasztikusan csökken, ezért ezt az állapotot mindenképpen el kell kerülnünk. Erre a kérdésre a továbbiakban még visszatérünk.
A memória másik fontos paramétere a sebessége (elsősorban az órajele, de más tényezők is vannak). Itt az észszerű határokat a processzor kívánalmai határozzák meg. Kiemelendő, hogy a ma kapható AMD Ryzen CPU-k tudnak profitálni a gyors RAM-ból, így érdemes ilyet társítani melléjük.
Itt pedig elérkeztünk a szimuláció szempontjából (is) legfontosabb komponenshez, a processzorhoz.
Az elmúlt évek (évtizedek?) legfontosabb trendje a párhuzamosítás. Ahelyett, hogy egy tetszőleges számítási feladatot elemi utasítások sorozataként próbálnánk megoldani, lehetőség szerint megpróbálunk ezek közül minél többet egyidőben elvégeztetni a géppel. Ehhez természetesen szükség van egy olyan eszközre, ami képes is erre, egy többmagos processzorra.
(A párhuzamosítás egy szélsőséges, speciális esetének tekinthető, amikor általános célú számításokat grafikus gyorsítón futtatunk le, de ennek tárgyalásába most nem kezdünk bele).
Hogy egy adott feladat milyen mértékben párhuzamosítható, nagyban függ annak jellegétől: egy alkatrészmodell megépítése a Solidworksben jellemzően egymásra épülő műveletek sokaságából áll, így az kevéssé, míg egy render, ahol a kép részeit hatékonyan szét lehet osztani a magok/szálak között, nagyon jól. Természetesen egyes feladattípusok körében a különböző szoftverek között jelentős eltérések lehetnek a párhuzamosítás fokában, ez a szoftver „jóságának” egyik fokmérője lehet.
Példafuttatásunkkal arra a kérdésre kerestük a választ, hogy a Flow Simulation hogyan teljesít a fenti kérdésekben, mennyire tudja hasznosítani a pótlólagos processzormagokat, illetve mennyi memóriát igényel egy adott feladathoz. A számítás maga pofonegyszerű volt, felállításában az elsődleges szempont a könnyen becsülhető hálóméret volt: egy egyszerű lépcső keresztmetszeten átáramló folyadékot vettünk, mindenféle egyéb fizikai folyamat figyelembevétele nélkül.
TESZTELTÜK A HARDVEReket
A modellt három hálómérettel futtattuk: 300 ezer, 1,5 millió, illetve 6 millió cellával. Ennek célja volt, hogy felderítsük, nagyobb hálóméreteknél javul-e a párhuzamosítás hatásfoka.
A modell méretének korlátot a rendelkezésünkre álló számítógép állított, ami AMD Ryzen 1800x processzorral (8 valós mag) és 32 GB RAM-mal rendelkezett. Az SMT-t (az Intel-oldali implementációját talán többen ismerik: Hyper-Threading) a BIOS-ban letiltottuk, bizonyos számú maggal együtt. Így a számítást 2, 4, 6 és 8 magon futtattuk le, minden esetben 50 iterációt végeztetve. Ez az első generációs asztali Ryzen processzor nem rendelkezik agresszív turbóval, így a processzor órajele nagyjából állandó volt a számítások során. Egyedül a kétmagos futtatások során volt egy átlagban kb. 0,1 GHz-es emelés tapasztalható, de az eredményekben ezt korrigáltuk, hogy tisztán a párhuzamosításra tudjunk koncentrálni.
A memóriaigény némileg egyszerűbb kérdés, kezdjük azokkal az eredményekkel! Az alábbi értékek a Flow Simulation megoldó folyamatának a memóriaszükségletét mutatják, amiben értelemszerűen nincs benne az operációs rendszer és az egyéb programok által elfoglalt hely, sőt, még a Solidworks igényelte terület sem. A végestérfogatos számításban minden cellához egy fizikai mennyiségből egyetlen érték kapcsolódik (egy cellában egy nyomás-, egy sebesség-, egy hőmérséklet, stb. értelmezett), így a memóriaigény a hálómérettől várhatóan lineárisan függ.
A rendelkezésünkre álló géppel a többi folyamatot is figyelembe véve körülbelül ez a maximum felbontás, amit megengedhetünk, talán még 7 millió celláig el lehet merészkedni swapelés nélkül. Az adatokra illesztett görbéből látszik, hogy egy kb. 250 MB-os fix adatmennyiségen túl millió cellánként kb. 3,74 GB RAM szükséges.
A többszálú futtatás hatékonyságát már grafikonon egyszerűbb megmutatni.
Látható, hogy 6, 8 mag esetén a teljesítménynövekmény fokozatosan egyre csökken. Az egyes szálak számításainak összefűzése ugyancsak „költségekkel” jár számítási idő tekintetében. Azt vártuk, hogy a kisebb feladatoknál a párhuzamosítás egyre kevésbé lesz hatékony, mivel ez a költség ott fajlagosan magasabb, viszont ezzel ellentétes trendet figyelhetünk meg. Elképzelhető, hogy az 50 iteráció túl kevés volt, és valami alapfolyamat (pl. a számítás előkészítése, háló betöltése) némileg félrevitte az eredményeket, de az is lehet, hogy a várakozásunk téves volt.
Mindenesetre az látszik, hogy mindhárom esetben hasonló mértékben járulnak hozzá a további processzormagok a számítás gyorsításához. De mégis mennyivel? Az alábbi diagramon a 1,5 millió cellás eset eredményeit kiemelve figyelhetjük ezt meg.
2-ről 4 magra váltva az előrelépés jelentős, 6-ról 8-ra viszont már csak 13%. Ez egybevág a SOLIDWORKS-közösségben végzett korábbi tesztekkel, amik azt mutatják, hogy 10, maximum 12 mag fölött már elenyésző a nyereség, a teljesítménygörbe kisimul. Ez a tézis függetlennek látszik a hálómérettől, nagyobb feladatok esetében is megáll. Hogy ebben a trendben bekövetkezik-e negatív fordulópont, elkezd-e csökkenni a teljesítmény, azt a rendelkezésünkre álló hardverekkel pontosan felderíteni nem tudjuk, így az előzőekhez hasonló, a közösség által felállított tapasztalati törvényre tudunk hagyatkozni, miszerint 10 millió cella felett már rendkívül nehézkessé válnak a dolgok.
Összefoglalva tehát az látszik, hogy a SOLIDWORKS Flow Simulation eredeti célkitűzéséhez híven teljesít: ez egy desktop alkalmazás, ami elsősorban a tervezőknek segít szimulációs eredményekkel, a tervezés korai szakaszától, kevés szakirányú hozzáértést követelve. Ennek megfelelően a CAD-munkaállomások szintjén teljesít jól, annál erősebb hardvert már nem tud kihasználni. Manapság 32 GB RAM nem számít kiugróan soknak, és a 6, 8, vagy akár 10, 12 magos processzorok (kissé a jövőre is tervezve) is könnyen elérhetőek. Sőt, ebben a tartományban, azonos árszinten lehet, hogy egy kevesebb magos, de nagyobb órajelű CPU-val jobban járunk. Egy ilyen hardvert használva a feladatok széles skáláját le lehet fedni.
A fenti eredményeink mindezzel együtt összehasonlító jellegűek, hogy egy adott szimulációs modell hány cellával és hány iterációval oldható meg jó minőségben, azt előre biztosan megmondani nem lehet, leginkább a nagyságrendet lehet belőni tapasztalati alapon. Ha viszont valaki olyan problémákat szeretne megoldani, amik láthatóan kívül esnek a Flow Simulation komfortzónáján, akkor sincs probléma, ugyanis a SimuliaWorks-portfólió CFD-eszközt is kínál, aminek segítségével felhőben is futtathatunk, akár 144 magon is, aminél többre igen keveseknek van szükségük.
írta: Szatmári Tamás