Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

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:

  1. Instrumentointi
  2. Suorituksen mittausdatan keruu ja analyysi
  3. 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:

module load scorep
scorep mpicc -o my_prog my_prog.c

tai asettamalla C/C++-koodeille Makefileen:

CC=scorep mpicc

tai vastaavasti Fortran-koodeille:

F90=scorep mpif90

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ä:

...
#SBATCH --ntasks=40

module load scalasca
scan srun ./my_app

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:

SCOREP_REGION_NAMES_BEGIN
 EXCLUDE
   swap_fields
   evolve
SCOREP_REGION_NAMES_END

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:

rsync -r puhti.csc.fi:/scratch/.../rundir/scorep_my_app_40_trace .
square scorep_my_app_40_trace

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.

Lisätietoja

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta