» »

CFD test

CFD test

pegasus ::

Tole sicer ni tema o navijanju, je pa benchmark, po katerem želja se je pojavila v AMD ZEN temi, ki je mimogrede navrgla nekaj debate o CFD, computational fluid dynamics.

Za kaj se gre? S cfd algoritmi simuliramo tok in vrtinčenje neke kapljevine v nekem okolju, naj si bo to voda v krivini cevi, vodna turbina ali letalsko krilo. Temeljijo na reševanju sistemov navier-stokes enačb. Geometrija se pretvori v mrežo primerno majhnih celic, reševanje pa se nato dogaja v primerno majhnih časovnih korakih, ki omogočajo zajeti dogajanje na primerno majhnem nivoju, da so rezultati za nas smiselni. Podrobnosti je tukaj še mnogo (za več doktoratov mnogo), a se na tem mestu vanje ne bi spuščal. V končni fazi se večina teh zadev pretvori v obračanje velikih sparse matrik, kar je aritmetično neintenzivno delo, kar se v hardver zahtevah prevede v "hočem več memory bandwidtha".

Za test sem si izbral primer, ki je prosto dostopen vsem. Komercialni softeri tu na žalost odpadejo, najprej zato, ker je njihova cena taka, da je cena hardvera, na katerem laufa, samo za zaokrožit budget, potem pa zato, ker se njihovih benchmarkov ne sme javno objavljat. Primer je droneCFD python wrapper okrog openfoama, ki pride z example geometrijo nečesa letečega in vsemi potrebnimi nastavitvami že v priloženem examplu, kar vam omogoča enostaven primerljiv run med večimi različnimi konfiguracijami. Poleg hw je tu zanimiv še vmesni del, prevajalnik in matematične knjižnice, katerih izbira tudi ni nepomembna.

Kaj potrebujete za zagon testa? Neko dedicated mašino, na kateri je OS, ki je sposoben poganjat OpenFOAM, Paraview in Python. Zadeve si lahko prevedete in namestite sami, kar zahteva nekaj časa in znanja (sam se navdušujem nad easybuildom), lahko pa uporabite binary builde, ki jih že ponuja vaš OS. Kar se hw tiče se dajmo izognit gručam in se omejimo na to, kar se da stlačit v eno škatlo, torej workstation mentaliteta.

Vrednost tega testa je v tem, da (če bomo pridni) lahko resno vpliva na izbiro hardvera za inžinerje, ki si s takim "igračkanjem" služijo kruh in hkrati delajo ta svet lepši za vse nas. Predlagam, da se osredotočimo na wallclock time, potreben za 3000 time stepov simulacije, kar dcRun lepo izpiše na stdout. V tej temi se omejimo na objavljanje konfiguracij in rezultatov, v sosednji temi pa naj teče debata o tehničnih in drugih pogledih na vse skupaj.

Moj prvi run ever je trenutno nekje na polovici, ko bo končan, objavim konfiguracijo in številke.
  • spremenil: pegasus ()

pegasus ::

Konfiguracija hw:
* AMD 8320 stock
* 4x 8GB 1866MHz cl9
* 64gb ssd za rootfs, zil & l2arc
* 250gb hdd za zfs /home (dedup & compression on)
* xubuntu 15.04 (kernel 3.19, glibc 2.21)

Konfiguracija sw:
* easybuild 2.2
* GCC 5.2
* OpenMPI 1.6.5
* OpenBLAS 0.2.14
* FFTW 3.3.4
* ScaLAPACK 2.0.2
* SCOTCH 6.0.4
* Boost 1.58.0
* OpenFOAM 2.3.1
* Paraview 4.3.1
* Python 2.7.9
* scipy 0.14.1
* numpy 1.9.1
* numpy-stl 1.5.2
* PyFoam 0.6.5
* droneCFD 0.1.3

V tej kombinaciji mi simulacija do Time = 3000 traja ExecutionTime = 38008.28 s ClockTime = 39848 s

Sedaj pa experimentirat, da vidim, kje lahko prihranim kaj časa.

tiborrr ::

Sem bolj Windows človek, a poženem to v ponedeljek.

Ker ne bi rad razsul sistem, me zanima, ali je ta liveCD zmožen poganjanja tega primera? http://caelinux.com/CMS/

Problem je samo, ker mašino uporabljam čez Teradici (PCoIP) skozi FirePro R5000. Po moje jo bom moral zvleči iz omare in jo priklopiti na zaslon in miško, ker dvomim, da so ti posposobneži naredili softver za linux (rabiš host software, drugače ne dela USB forwarding, torej miš in tipkovnica).
Don't test the captain's validity or his vulnerability!

Zgodovina sprememb…

  • spremenil: tiborrr ()

tiborrr ::

P.S.: V kolikor koga zanima, imam šest (6) Opteron 6128 G34 čipov, dam ekstra poceni :)
Don't test the captain's validity or his vulnerability!

Brane22 ::

Točno to sem gledal na Ebay-u. Je ena SuperMicro H8Qneki quad socket za džabe, ( pokvarjena), MoBojoi za Dell PowerEdge quad socket G34 novi so pa tudi manj ko €90 + krvni davek.

Mene zanimajo discipline kot so compilanje itd, za to pa so tudi stari Optyji serije 61xx čezinčez dobri, dobijo se pa za drobiž. Recimo 6180 za €30.

pegasus ::

Isotropic je izjavil:

a ni tko, da rabi cfd predvsem cpu powah, manj pa ram?
Razmisli, kaj se pri cdfju dogaja. Imaš model, prekrit s 3d mrežo, razdrobljeno na nekaj miljonov celic. V vsakem časovnem koarku prebereš stanje v celici, izračunaš novo stanje, ga shraniš, nato uskladiš s sosednjimi celicami in po potrebi spet shraniš. To ponavljaš za nekaj 100-1000 časovnih korakov. Problem je večji, kot je cpu L2, zato ram igra glavno vlogo futranja cpu jeder s podatki. Količina rama, ki ga potrebuješ, je odvisna od velikosti problema in gostote mreže, a ponavadi res ni velika po obsegu. A upoštevaj, da moraš v vsakem časovnem koraku vse to prebrat, obdelat in zapisat nazaj.
Druga zanimiva zgodba tu je, da je floating point tu manj uoprabljen kot bi si mislil, večinoma je to še vedno integer math. Poglej si to, zelo relevantno.

Dr_M ::

Recimo 6180 za €30.


A to si gledal na ebayu onega iz litve, ki je poskodovan?
The reason why most of society hates conservatives and
loves liberals is because conservatives hurt you with
the truth and liberals comfort you with lies.

Brane22 ::

Ja. Ampak kljub temu se ga da dobiti dokaj poceni tudi drugje, 6172 pa sploh.

Zgodovina sprememb…

  • spremenilo: Brane22 ()

Brane22 ::

Šit. Una plata je šla za friggin €226. Pokvarjena. To je tretjina cene nove z garancijo.

Ta folk je blesav. Še dobro, da so na voljo poceni alternative.

Isotropic ::

raje lavfaj lid driven cavity, ki je standardiziran benchmark in ga vsebujejo tut komercialni programi. tko bo mozna se primerjava openfoam - abaqus recimo.

pegasus ::

Premik naprej. OpenBLAS zamenjaš z ACML 5.3.1 in pridobiš skoraj pol ure:
ExecutionTime = 36820.82 s ClockTime = 38151 s

Naslednji korak: clMath libs ... da vidim, če je gpu lahko kaj koristen.

Brane22 ::

Openblas je proti komercialnim variantam videti kot hack IIRC.

Gre za kao BLAS, ki je zložen na kup malo manj ko z lepilnim trakom. Dali so stvar skozi compiler in nato "zoptimizirali" kombinacije optimizacijskih flagov, vsaj v precej primerih.

Rešitve proizvajalcev so bistveno bolj ročno polirane, večinoma kar v assemblerju zložene, vsaj nizkonivojske rutine.

pegasus ::

Drži ... ker nažalost edino proizvajalci procov še vidijo vrednost v tem, da se izprsijo s svojimi zoptimiziranimi knjižnicami. Saj bi rekel "znajo prodajat", ampak je AMD fliknil vseskupaj na github, tako da ... ;)
Koliko mladine se v današnjem svetu mobile apps še želi ukvarjat z mikrooptimizacijami za nek obskuren hardver?

Brane22 ::

Nego, par vprašanj:


So pri tem hendlanju opteron robe še kake bližnjice ?

Se ECC Reg DDR3 DRAM da dobiti rabljen kje lokalno v teh krogih ceneje kot na recimo Ebay ?

ALi recimo proce ?

Je na voljo kaka cenejša realna ( lahko rabljena) alternativa Supermicrovi H8QGxx plati ?

Če bi imel recimo N quad-socket plat, kaj profitiram, če jih povežem recimo z Infiniband QDR 40G karticami ? Dobim samo kao superhitro mrežno ali še kaj več ?

Če bi si omislil Infiniband, je optimalna zadeva povezava stroj-stroj, ali lahko brez negativnih posledic pičim stvar skozi Infiniband svič ?

Glede na to, da je večina kartic dual-port, a profitiram kaj s povezavo obeh portov skozi isti svič ( je kakšna varianta teaminga, kot na mrežnih) ?

Zgodovina sprememb…

  • spremenilo: Brane22 ()

pegasus ::

Bližnjice: verjetno, a so mi neznane.

ECC ram: kolikor vem ga nihče ne meče stran ... tako da veljajo tržne cene. Enako za proce.

Plate: IBM, HP, Dell, Supermicro so mi znani proizvajalci z 4p opteron platami. Trenutno imam zanimivo ponudbo za večjo količino ibm x3755 mašin.

Infiniband: dobiš sposobnost furat MPI tako kot se spodobi, dobiš RDMA in vse kar se da smiselno furat prek ib (recimo iscsi). IP over IB sicer dela lepo, a ni pretirano smiseln (na QDR dela nekje max 3gbit/s). Z ScaleMP rešitvijo si lahko narediš single-image numa mašino, a če ti je to cilj, ti bolj priporočam hw rešitev Numascale.

IB switch doda zanemarljivo malo latence. Če imaš več kot dve mašini, je switch precej smiselna izbira.

Dualport ib je zanimiva reč... kjer noben ne ve dobro, kaj z njo počet. Kolikor sem se pogovarjal naokrog, se uporablja za HA v active/passive konfiguraciji, ker imajo nekateri ljudje probleme s crkovanjem portov. Druga zanimiva konfiguracija je v varjani dveh single port kartic, vsaka v svojemu cpuju pripadajočem pci slotu. Tako lahko vsak cpu komunicira prek svojega hbaja, namesto da bi prek QPIja skakal prek soseda v svet. To je specifika intla (ex Qlogic) na dual socket platah.
Sicer velja analizirati problem, ki ga rešuješ in se vprašati, če je bandwidth res tisto, kar potrebuješ. V veliki večini primerov je latenca bolj aktualna in dual port rešitev na eni kartici ti tu ne pomaga veliko. Sploh CFD je znan po tem, da generira miljone msgjev po nekaj bajtov ...

Brane22 ::

BTW, a ma kdo dostop do kakgea 1U redundančnega plug-in PSUja, ki bi ga bil pripravljen odstopit ?

nekaj v tem stilu:

 1

1


 2

2


 3

3



Dellove plate se napajajo tako in bi rad pogruntal potrebne signale. Sprememba glede na ATX napajalnik je v tem, da zadeva da od sebe samo dve napajalni napetosti: 12V standby ( do par A) in 12V main ( ponavadi čez 100A). Ima pa še par kontrolnih pinov in to me zanima.

Lahko je tudi skurjena zaradi mene.

Brane22 ::

pegasus je izjavil:


Dualport ib je zanimiva reč... kjer noben ne ve dobro, kaj z njo počet.


A bi se ga dalo recimo uporabit kot combo 40Gig-E + IB ?

Če je IP skozi IB bolj beda zadeva in če večina teh kartic zna laufat v tudi kot ethernet, se da kombo izkoristit v ta namen ?

Saj ne da ne bi bil 10G zadosti ampak če je že tale gear dostopen...

pegasus ::

Samo sveže Mellanox ConnectX kartice imajo dvojno osebnost, z njimi nimam izkušenj. Preveri prej dokumentacijo, če je možno na isti kartici vsak port furat vsak s svojim protokolom.

pegasus ::

Btw, če se malo potrudiš, dobiš xeon phi online za $125. Očitno ima intel res težave to prodat ;)

Brane22 ::

MIslim, da bi se pognal za Dell R815 plato, ki bi jo prepričal v delo izven piksne. Originalni napajalnik je drag, pa tudi 20 drugih se mi valja pod mizo. Za tole ne rabim nevemkakšne redundance.

Na to bi šel roj poceni Optyjev 6172 ali kaj v tem stilu, čez pa ene 64 ali 128GB DDR3 ECC za male pare. Potem bi pa počil zraven poceni IB switch in zapikal kartico v vsako od teh plat in fileserver.

S fileserverja, ki bi bil fizično zraven, bi po potrebi prižgal CPU muscle, oddelal z njim kar je treba in ga ugasnil.

KOlk je pomembno se ozirati na RoCE iWarp in podobne zadeve pri teh karticah ?

Mislim, a se za te zadeve dobi switch za drobiž, da se sploh splača razmišljati o tem ?

Sicer pa, bandwith pri splošni rabi pride prav predvsem za fileserving, NFSv4 SMB in podobne zadeve pa baje lahko delajo prek IB čisto fajn, tako da izven tega je mogoče vseeno, če kartica pa ne zna ravno vseh modernih trikov...

pegasus ::

Za SMB ne vem, a NFS over RDMA je "nekdo je nekoč nekje pokazal, da stvar lahko kaže znake življenja" in marketingarji temu rečejo "fully supported" ;) Tko da ne se zanašat na to, nfs furaj lepo prek etherneta. Lahko sprobaš iSER (iscsi + rdma), dela bolje v smislu "lahko kupiš drage storage rešitve s to tehnologijo".

RoCE je "rdma over converged ethernet", "converged ethernet" je ethernet brez stop frejmov, da lahko FCoE čez voziš. iWARP se ni prijel.

Kaj sicer želiš obdelovat?

Brane22 ::

V bistvu me zanima neke sorte compile farma s svojevrstnim hranjenjem vmesnih rezultatov v RAMu in tu bi bil RAM oziroma bolj nejgova količina še največji bottleneck.

Sem prišel na to, da bi zadostovala mogoče ena Opty qad socket plata, a ko sem videl kako poceni so te zadeve na ebay, mi je padlo na pamet, zakaj ne bi razmišljal vnaprej.

Že pri eni je problem poraba- ta ne sme biti stalna. Torej ni variante, da bi to fural tudi kot centralni fileserver. Se pravi, da ga moram nanj povezati, se z njega po potrebi zbootati, na njem pobrati začetne podatke in pustiti končne rezultate.

Gig-E nekako ni orodje za to, hitrejše variante so pa drage ko prasica.

Tele zadeve so pa poceni, sploh SDR variante, pa tudi QDR se že dobi.

Se pravi, če počim dve kartici in tisti meter QDR kabla med server in CPU plato, imam zelo hiter low-latency HT-like kanal ( le da ni koherenten), skozi katerega si mašine lahko filajo RAM in puščajo podatke in celo semaforji so dovoljeni (ima možnost atomičnega cikla), pa če NFS dela ali ne.

Še bolj pride ta varianta v igro če bi obseg razširil čez to, kar zmore en Opty cluster. Takrat pač dodam en IB switch in počim nanj vse- fileserver in vse CPU plate.

Če pa to ne bi šlo iz nekega vzroka, še vedno lahko uporabim te kartice kot 40G-E ali celo 10G-E.
Sem šel gledat manual, na dvokanalnih delajo tudi kombinacije IB-ETH itd.

Edino QDR switchi/optični kabli/QSFP spojniki so dragi ampak ni panike, pač za začetek vzamem samo kartice in poceni bakrene kratke kable.

pegasus ::

Si prepričan, da ni gcc -pipe vse kar rabiš ? :)

Brane22 ::

v začetku čisto možno, a zanima me nasploh.

Sploh pa, rad bi se poglobil v clang/llvm, tam se zdi veliko več prostora za čaranje.

Pod vmesnimi rezultati nisem mislil na to, kar si stopnje gccja puščajo v -pipe ampak vmesne stopnje nekakšnih trasformacij sourceja pred prevajanjem.

Pa tudi za mnogo drugih stvari bi tak stroj prav prišel.

Stalno kupujemo mašine glede potrebe, ki bi lahko bile, potem pa nam ta hardver na raznih koncih samo žre štrom.

Ideja je bila ta, da bi imel na mizi mlinček, ki je ravno zadosti za malo več ko grafični terminal, vse zahtevnejše zadeve bi pa laufal na CPU serverju.

Zdaj vse to nadaljnje čaranje se zdi low risk. Ako prodže, prodže. V najslabšem primeru bom pač vrgel stran €100+ za dve kartici pa kabel. V precej bolj verjetnem bi se morala obnesti imenitno kot 40G-E ali vsaj 10G-E. V najboljšem seveda bi moral fileserving na IBju gate trgat.

Tudi igranje z Optyji je blizu optimale. Začetni glavobol je bila astronomska cena plate, a to je, kot je videti, rešen problem. CPUji so noro poceni, RAM tudi zelo. SIngle thread performance ni tako zelo bistven, ko preseže neko zmerno mejo, ki jo Opty na 2GHz+ zagotovo.Pomembno je mnogo RAM-a ( z ustreznim kumulativnim bandwithom), NUMA, kumulativni CPU in nek pogled v prihodnost - stvar ne sme postati neustrezna ravno jutri.

Quad opty je check in all boxes. Ko pride naslednja generacija, bo cena tej padla. Takrat bo 6386 dosegljiv za drobiž. 25% več threadov na malo višjem clocku. in s šitload RAM-a.

Stvar v vseh meni pomembnih vidikih ne bo veliko za novo generacijo še kar nekaj časa.

Tudi recimo te IB+Eth kartice se zdijo zelo dobra investicija - no moram še prebrat drobni tisk in pogledat komentarje. A ni videt, da se bo tehnika kaj kmalu tu znatno premaknila.

10G kartic za male pare ni in ni, pa so jih napovedovali že leta nazaj.

Tele zadeve pa tudi ne stanejo toliko, vsaj rabljene, in kot je videti, 10G-Eth zmorejo za šalo, ponavadi še veliko več.

Zgodovina sprememb…

  • spremenilo: Brane22 ()

pegasus ::

Nekaj napredka, da ne pišem dvalkrat ... in še nekaj debate vrednih grafkov.

pegasus ::

pegasus je izjavil:

Premik naprej. OpenBLAS zamenjaš z ACML 5.3.1 in pridobiš skoraj pol ure:
ExecutionTime = 36820.82 s ClockTime = 38151 s

Naslednji korak: clMath libs ... da vidim, če je gpu lahko kaj koristen.

Še en korak vmes: prevedeš openmpi z knem in ugotoviš, da je ram prej delal na 1600mhz. Nastavim ga na 1866 in spotoma ugotovim, da dela ok na cl8. Številke postanejo krepko lepše: ExecutionTime = 30052.9 s ClockTime = 30555 s
Knem zmanjša overhead lokalne mpi komunikacije in dvigne učinkovistost (exectime/clocktime) iz 96.51% na 98.35%, hitrejši ram pa prinese pohitritev izvajanja.

Skupaj z meshingom in postprocesingom je tole še vedno okrog 9h, cilj je največ en večer (max 3h).

pegasus ::

Za ilustracijo, kako hitrost rama vpliva na cfd zadeve ... to isto reč sem pognal na našem clustru na dveh nodeih (dual x5650), eden z ramom @ 800MHz in drugem z ramom @ 1333MHz. Razlika je očitna.
ExecutionTime = 27334.75 s ClockTime = 27472 s
ExecutionTime = 18291.22 s ClockTime = 18471 s

pegasus ::

Pa še za lahko noč:

Brane22 ::

NI mi čisto jasno zakaj se zaj* s tem in ne naredite prej neke "štihprobe".

Če stvar vrti tam neke matrike, se verjetno da pogledati kaj se kliče v BLAS in v kakem zaporedju oziroma s kakšnimi argumenti. Tudi simpl timestamp ti lahko pove a to vsaj približno izkorišča HW ali ne.

Spuščanje skozi cele simulacije samo za nek občutek je brezupno časovno in energijsko potratno IMHO.

pegasus ::

a) ko bi le bilo tako enostavno ...
b) ker je to moj hobi projekt :)

Brane22 ::

Lahko pojasniš ?

pegasus ::

Pred nekaj meseci sem uspel tu med malimi oglasi dobit dve 75kilski piksni, vsaka z 48 jedri. Našel sem jima primeren dom in ju koj zapregel. Nekaj številk:

debian 8, bare metal, kernel 3.16
ExecutionTime = 7536.65 s ClockTime = 7568

proxmox, lxc, kernel 4.2.6
ExecutionTime = 7312.65 s ClockTime = 7416

V containerju moram zrihtat še knem, pa smo na konju. Kar se mene tiče, sem dosegel namen.

Orodje je sedaj dokončano, zdaj ga moram začet uporabljat za nekaj novega :)

pegasus ::

https://arstechnica.com/science/2018/10... ... tale link spada sem, preden se izgubi :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Stroj za računanje, veliko RAM-a

Oddelek: Kaj kupiti
191935 (1184) johnnyyy
»

prosim za pomoč- kako odpraviti tole napako...

Oddelek: Pomoč in nasveti
232118 (1627) Mavrik
»

PC za amatersko obdelavo videa in gledanje 3D filmov

Oddelek: Kaj kupiti
362569 (2146) klinker
»

navijanje voltaže rama

Oddelek: Navijanje
8713 (630) dxx
»

Ideja za hardcore modifikacijo oz. Ko ima človek preveč časa!

Oddelek: Navijanje
71386 (1175) TribesMan

Več podobnih tem