-
Scalasca
Scalasca
Scalasca on avoimen lähdekoodin ohjelmistotyökalu, joka tukee rinnakkaisohjelmien suorituskyvyn optimointia mittaamalla ja analysoimalla niiden ajonaikaista toimintaa tapahtumajälkien avulla. Analyysi tunnistaa mahdollisia suorituskyvyn pullonkauloja – erityisesti viestintään ja synkronointiin liittyviä – 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ö koostuu kolmesta vaiheesta:
- Instrumentointi
- Suorituksen mittausdatan keruu ja analyysi
- Analyysiraportin tarkastelu
Instrumentointi
Scalasca käyttää kohdesovelluksen instrumentointiin Score-P-mittausinfrastruktuuria. Score-P:tä voidaan käyttää myös itsenäisenä työkaluna ilman Scalascaa.
Jotta voit instrumentioida sovelluksen, sinun täytyy kääntää sovellus uudelleen käyttäen Score-P:n instrumentointikomentoa scorep, joka lisätään alkuperäisten käännös- ja linkityskomennon etuliitteeksi:
tai asettamalla C/C++-koodeille Makefileen:
tai vastaavasti Fortran-koodeille:
Mittausdatan keruu ja analyysi
Vaikka Score-P:llä instrumentoidut sovellukset voidaan suorittaa suoraan ympäristömuuttujilla määritellyllä mittausasetuksella, Scalascan tarjoamaa kätevää scan-komentoa voidaan käyttää hallitsemaan tiettyjä Score-P-mittausympäristön osa-alueita kohdesovelluksen suorituksen aikana. Tuottaaksesi suorituskykymittauksen instrumentoidulla suoritustiedostolla, lisää scan-komento srun-komennon eteen eräajotyöskriptissä:
Oletuksena kerätään tasainen profiili. Suorituksen päätyttyä mittaustulokset tallennetaan kokeen hakemistoon, joka muodostuu oletuksena etuliitteestä scorep_, kohdesovelluksen suoritustiedoston nimestä, ajon asetuksista (esimerkiksi MPI-rankkien ja/tai OpenMP-säikeiden määrästä) sekä muutamista muista mittausasetuksen parametreista. Yllä olevassa esimerkissä tämä olisi scorep_my_app_40_sum.
Voit myös kerätä 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. Arvion saa 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, voit luoda tiedoston scorep.filter, jonka sisältö on:
ja tarkistaa suodatuksen vaikutuksen -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
...
Voit nyt jatkaa jäljen keruuta asettamalla ympäristömuuttujan 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 olisi 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 työasemalleen ja kopioida kokeen hakemiston sinne analysointia varten, esimerkiksi näin:
Suurille jäljille voi kopioida myös pelkän jälkikäsitellyn jälkianalyysin tulostiedoston scorep_my_app_40_trace/scout.cubex.
OTF2-muotoinen tapahtumajälki scorep_my_app_40_trace/trace.otf2 voidaan analysoida myös Intel Trace Analyzerilla.