Hyppää sisältöön

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.

Learn more about 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:

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

module load scorep
scorep mpicc -o my_prog my_prog.c

tai asettamalla Makefilessa C/C++-koodeille:

CC=scorep mpicc

tai vastaavasti Fortran-koodeille:

F90=scorep mpif90

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

...
#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ä, 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:

SCOREP_REGION_NAMES_BEGIN
 EXCLUDE
   swap_fields
   evolve
SCOREP_REGION_NAMES_END

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:

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

Suurille jäljille voidaan kopioida myös pelkkä jälkikäsitelty jälkianalyysin tulostiedosto scorep_my_app_40_trace/scout.cubex.

Lisätietoja

Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .