-
Suorituskyvyn tarkistuslista
Suorituskyvyn tarkistuslista
Tälle sivulle on koottu tärkeää tietoa, jonka avulla voit varmistaa mahdollisimman hyvän suorituskyvyn töillesi ja järjestelmälle. Jos tiedät, miten työn suorituskykyä voi parantaa, lisääthän oman panoksesi listaan!
Tarkista CPU-affiniteetti
CPU-affiniteetti kuvaa sitä, miten käynnissä oleva ohjelma sijoitetaan supertietokonesolmun käytettävissä oleville CPU-ytimille. Suurteholaskennassa affiniteetin oikea asettaminen on tärkeää suorituskyvyn kannalta. Se auttaa ohjelmia hyödyntämään paremmin prosessorin nopeita välimuisteja ja muistia, vähentää tarpeetonta siirtymistä ytimien välillä ja johtaa vakaampiin ja ennakoitavampiin ajoaikoihin.
Katso CPU-affiniteetin opas, josta löydät ohjeet ohjelmien CPU-affiniteetin tarkasteluun ja hallintaan.
Tee skaalautuvuustesti
On tärkeää varmistaa, että työsi pystyy käyttämään tehokkaasti kaikkia sille varattuja resursseja (ytimiä). Tämä on varmistettava jokaiselle uudelle koodille ja työtyypille (eri syöte) skaalautuvuustestillä. Täysiä solmuja käyttävät skaalautuvuustestit koskevat vain töitä, jotka varaavat kokonaisia solmuja.
Jos mahdollista, aja lyhyt simulointi kasvavalla määrällä resursseja (ytimiä) ja arvioi, kuinka paljon nopeammin työsi valmistuu. Sen pitäisi nopeutua vähintään 1,5-kertaisesti, kun resurssien (ytimien) määrä kaksinkertaistetaan. Älä varaa työllesi enempää resursseja kuin se pystyy käyttämään tehokkaasti. Jos skaalautuvuustestit eivät ole käytännöllisiä, aja työsi ensin pienemmällä määrällä resursseja ja kirjaa suorituskyky ylös. Kokeile sitten lisätä resursseja ja varmista, että työ (tai vastaava työ) valmistuu nopeammin.
Huomaa, että kaikkia koodeja tai työtyyppejä ei voi ajaa rinnakkain. Varmista tämä ensin oman koodisi osalta.
Huomioi I/O – sillä voi olla suuri vaikutus
Jos työkuormasi kirjoittaa tai lukee suuren määrän pieniä tiedostoja, saatat havaita heikon I/O-suorituskyvyn, vaikka kokonainen taltio ei olisikaan kovin suuri. Ota huomioon seuraavat asiat mahdollisten pullonkaulojen vähentämiseksi:
- Käytä paikallista tallennustilaa erityisesti tekoälytyökuormille scratchin sijaan. Vain joissakin solmuissa on nopea paikallinen levy, mutta olemme nähneet 10-kertaisen suorituskyvyn paranemisen siirtymällä sen käyttöön. Tarkista suorituskykysi: älä käytä resurssia, jos siitä ei ole hyötyä. Esimerkki AI-eräajosta
- Selvitä, voitko valita, miten sovelluksesi tekee I/O:ta (esim. OpenFoam
voi käyttää collated-tiedostomuotoa), äläkä kirjoita levylle tarpeetonta tietoa
tai tee sitä liian usein (esim. GROMACSia ei tule käyttää CSC:llä
-v-lipun kanssa). - Yksi tapa välttää suuri määrä (pieniä) tiedostoja on asentaa monimutkainen Python- tai R-pohjainen ohjelmistosi singularity-konttiin. Tämä auttaa myös projapplin tiedostomääräkiintiöiden kanssa. Yksityiskohtaisia esimerkkejä tämän tekemisestä kirjoitetaan parhaillaan.
Sovelluksille, jotka kirjoittavat ja lukevat suuria tiedostoja, I/O-suorituskykyä voidaan usein parantaa oikeilla Lustre-asetuksilla:
- Jos sovelluksesi tekee rinnakkaista I/O:ta, aseta sopiva stripe count
komennolla
lfs setstripe -c, lisätietoja kohdassa Lustren parhaat käytännöt. - Käytä kollektiivista rinnakkaista I/O:ta, jos mahdollista.
- Katso myös laajemmat I/O-optimointivinkit.