Scalasca
Page undergoing cleanup after Puhti and Mahti retirement
This page contains outdated references to Puhti and/or Mahti, which have now been decommissioned. The page is undergoing changes to reflect CSC's new supercomputer Roihu.
Scalasca on avoimen lähdekoodin ohjelmistotyökalu, joka tukee rinnakkaisohjelmien suorituskyvyn optimointia mittaamalla ja analysoimalla niiden ajoaikaista käyttäytymistä tapahtumajälkien avulla. Analyysi tunnistaa mahdollisia suorituskyvyn pullonkauloja – erityisesti niitä, jotka liittyvät kommunikointiin ja synkronointiin – ja tarjoaa ohjeita niiden syiden selvittämiseen. Scalasca tukee sovelluksia, jotka käyttävät MPI:tä, OpenMP:tä, POSIX-säikeitä tai MPI+OpenMP/Pthreads-rinnakkaistusta.
Saatavuus
- Puhti: 2.6
- Mahti: 2.6
Lisenssi
Käyttö on mahdollista sekä akateemisiin että kaupallisiin tarkoituksiin.
Käyttö
Scalascan käyttö sisältää kolme vaihetta:
- Instrumentointi
- Suorituksen mittaustiedon keruu ja analyysi
- Analyysiraportin tarkastelu
Instrumentointi
Scalasca käyttää Score-P-mittausinfrastruktuuria kohdesovelluksen instrumentointiin. Score-P:tä voidaan käyttää myös itsenäisenä työkaluna ilman Scalascaa.
Jotta sovellus voidaan instrumentioida, se täytyy kääntää uudelleen
käyttäen Score-P:n instrumentointikomentoa scorep, joka lisätään
alkuperäisten käännös- ja linkityskomennon etuliitteeksi:
tai asettamalla Makefilessa C/C++-koodeille:
tai vastaavasti Fortran-koodeille:
Mittaustiedon keruu ja analyysi
Vaikka Score-P:llä instrumentoidut sovellukset voidaan suorittaa suoraan
ympäristömuuttujilla määritellyllä mittauskokoonpanolla,
Scalascan tarjoamaa kätevää scan-komentoa voidaan käyttää hallitsemaan
tiettyjä Score-P-mittausympäristön osa-alueita kohdesovelluksen
suorituksen aikana. Suorituskykymittauksen tuottamiseksi
instrumentoidulla suoritustiedostolla lisää scan-komento srun-komennon
etuliitteeksi eräajotyöskriptissä:
Oletuksena kerätään tasainen profiili. Suorituksen päätyttyä mittaustulokset
tallennetaan kokeen hakemistoon, joka muodostuu oletuksena
etuliitteestä scorep_, kohdesovelluksen suoritustiedoston nimestä,
ajokokoonpanosta (esimerkiksi MPI-rankkien ja/tai OpenMP-säikeiden määrästä)
sekä muutamista muista mittauskokoonpanon parametreista. Esimerkiksi yllä olevassa
tapauksessa hakemisto on scorep_my_app_40_sum.
Voidaan kerätä myös tapahtumajälkidataa. Koska jäljitys voi tuottaa valtavia
määriä dataa, on suositeltavaa ensin arvioida jäljen koko ja tarvittaessa
suodattaa joitakin funktioita pois mittauksesta. Arvio voidaan saada
komennolla scorep-score:
$ scorep-score -r scorep_my_app_40_sum/profile.cubex
Estimated aggregate size of event trace: 1022kB
Estimated requirements for largest trace buffer (max_buf): 129kB
Estimated memory requirements (SCOREP_TOTAL_MEMORY): 4097kB
(hint: When tracing set SCOREP_TOTAL_MEMORY=4097kB to avoid intermediate flushes
or reduce requirements using USR regions filters.)
flt type max_buf[B] visits time[s] time[%] time/visit[us] region
ALL 131,431 20,196 12.81 100.0 634.28 ALL
MPI 95,054 8,076 8.65 67.5 1071.04 MPI
USR 24,168 8,056 3.38 26.3 418.96 USR
COM 12,168 4,056 0.78 6.1 193.47 COM
SCOREP 41 8 0.00 0.0 48.00 SCOREP
MPI 94,000 8,000 0.17 1.3 20.97 MPI_Sendrecv
USR 12,000 4,000 0.00 0.0 0.25 swap_fields
COM 12,000 4,000 0.00 0.0 0.53 exchange
USR 12,000 4,000 3.33 26.0 832.89 evolve
MPI 826 14 0.01 0.1 823.21 MPI_Recv
...
Jotta swap_fields- ja evolve-funktioiden mittaus voidaan suodattaa pois,
voidaan luoda tiedosto scorep.filter, jonka sisältö on:
ja tarkistaa suodatuksen vaikutus -f-valinnalla:
$ scorep-score -f scorep.filter -r scorep_my_app_40_sum/profile.cubex
Estimated aggregate size of event trace: 835kB
Estimated requirements for largest trace buffer (max_buf): 105kB
...
Tämän jälkeen voidaan jatkaa jäljen keruuseen asettamalla
ympäristömuuttuja SCOREP_FILTERING_FILE ja välittämällä valinnat
-q ja -t komennolle scan:
...
#SBATCH --ntasks=40
module load scalasca
export SCOREP_FILTERING_FILE=scorep.filter
scan -q -t srun ./my_app
Kun jäljen keruu on valmis, Scalasca suorittaa
jälkianalyysin tunnistaakseen erilaisia suorituskyvyn pullonkauloja.
Kun jäljitys on käytössä, kokeen hakemisto on
scorep_my_app_40_trace.
Analyysiraportin tarkastelu
Scalascan analyysiraportin tarkastelutyökalua square ei tällä hetkellä voi ajaa CSC:n
supertietokoneilla. Käyttäjä voi kuitenkin asentaa Scalascan omalle
paikalliselle työasemalleen ja kopioida kokeen hakemiston sinne analysointia varten,
esimerkiksi:
Suurille jäljille voidaan kopioida myös pelkkä jälkikäsitelty jälkianalyysin
tulostiedosto scorep_my_app_40_trace/scout.cubex.