Babel : SCALASCA

Description

SCALASCA est un outil graphique d'analyse de performances pour applications parallèles. Il a été développé par le JSC (Jülich Supercomputing Centre). Il permet d'analyser le comportement d'une application et d'identifier facilement les parties critiques. Cet outil est parfaitement adapté à l'étude d'exécutions massivement parallèles.

Versions installées

  • SCALASCA 1.4
  • SCALASCA 1.4.1 (version par défaut)

Attention : SCALASCA est parfaitement adapté aux applications hybrides MPI et multithreads/OpenMP jusqu'au niveau MPI_THREAD_MULTIPLE pour un profil et MPI_THREAD_FUNNELED pour une trace.

Utilisation

La commande module permet d'accéder à SCALASCA.

Avant de travailler avec cet outil, il faut donc exécuter la commande :

module load scalasca

L'utilisation de SCALASCA se fait en trois étapes :

  1. Instrumentation de l'application ;
  2. Exécution de l'application instrumentée ;
  3. Analyse/visualisation des résultats.

Instrumentation

SCALASCA fonctionne en modifiant votre application pour insérer ses propres procédures de mesures.

Toute application peut être instrumentée soit automatiquement, soit manuellement. Seule l'instrumentation automatique d'une application MPI pure (sans OpenMP) sera abordée dans ce document. Pour la procédure manuelle, référez vous au manuel de SCALASCA.

Pour instrumenter votre application, il suffit d'ajouter devant le nom du compilateur (en laissant un blanc), la commande skin (ou scalasca -instrument) :

skin mpixlf95_r my_code.f95

Attention : les performances sont mesurées entre les appels à MPI_Init et MPI_Finalize. Toute opération effectuée en-dehors ne sera pas prise en compte.

Attention : l'usage de SCALASCA entraîne des surcoûts en temps d'exécution, d'occupation mémoire et disque.

Exécution

L'exécution se fait en ajoutant la commande scan (ou scalasca -analyze) juste avant mpirun dans vos scripts LoadLeveler.

Par défaut, seul un profil est collecté. Un profil est un résumé de l'exécution.

Pour obtenir une trace des événements et non plus un simple profil, il suffit d'utiliser l'option -t. Attention, cette option augmente fortement les besoins en espace disque. Cette option est très utile car elle permet à SCALASCA d'identifier divers problèmes de performances qui seront mis en évidence lors de la visualisation.

A chaque exécution, SCALASCA écrit ses fichiers dans un répertoire dont le nom est généré de la manière suivante :

epik_NOMAPPLI_MODENPROC_TYPE

avec

  • NOMAPPLI, le nom de l'exécutable,
  • MODE, le mode d'exécution (VN, DUAL ou SMP),
  • NPROC, le nombre de processus,
  • TYPE, sum pour un profil, trace pour une trace.

Attention : si le répertoire existe déjà, l'exécution échouera (pour éviter d'écraser des résultats précédents). Il faut donc vous assurer avant qu'il n'existe pas.

Voici un exemple de job de soumission :

# @ job_name = scalasca_run
# @ job_type = BLUEGENE
# Fichier sortie standard du travail
# @ output = $(job_name).$(jobid)
# Fichier erreur standard du travail
# @ error = $(output)
# Temps elapsed maximum demande
# @ wall_clock_limit = 1:00:00
# Taille partition d'execution
# @ bg_size = 64
# @ queue

module load scalasca
scan mpirun -mode VN -np 256 -mapfile TXYZ -exe -- ./my_appli

Il est possible de relever certains compteurs hardware. Cependant, cette option n'est pas encore entièrement fonctionnelle et peut parfois poser problème (blocage de l'application ou relevé impossible).

Pour utiliser cette fonctionnalité, il suffit d'utiliser l'option -m compteur. La liste des compteurs disponibles est donnée dans les fichiers $SCALASCA_DIR/doc/METRICS.SPEC et /bglocal/pub/PAPI/3.9.0/include/linux-bgp-native-events.h.

Analyse/visualisation des résultats

L'analyse des résultats se fait à l'aide de l'interface graphique square (ou scalasca -examine). Pour la lancer, il suffit de taper :

module load scalasca
square repertoire_sortie_scalasca

SCALASCA

L'interface est divisée en trois volets. A gauche, les différentes mesures effectuées sont présentées. Au milieu, l'arbre des appels est donné et à droite, la topologie.

En développant ou en réduisant les différentes entrées du panneau de gauche, il est possible d'avoir une vue plus ou moins synthéthique des performances. Les choix effectués dans ce volet sont répercutés dans les 2 autres et permettent ainsi d'identifier les points critiques de l'application. Si l'exécution a été faite en mode trace, SCALASCA peut identifier certains comportements sources de pertes de performances (envois de messages dans le désordre, déséquilibrage de charge,…).

La visualisation passant par une application graphique, il n'est pas toujours commode de l'utiliser directement à partir de la frontale de Babel. Pour contourner ce problème, il est possible d'installer sur un PC sous Linux (ou toute machine UNIX) l'outil de visualisation CUBE (téléchargeable sur le site officiel de SCALASCA).

Documentation