Ada : 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 parallèles.

Versions installées

  • SCALASCA 1.4.3
  • SCALASCA 2.0
  • SCALASCA 2.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.

Attention : les fichiers générés par SCALASCA 1.4.3 et 2.x ne sont pas compatibles. Les traces et profils doivent donc être analysés par les versions les ayant créés.

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 mpiifort 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 poe (ou scalasca -analyze poe) juste avant le nom de votre exécutable dans vos scripts LoadLeveler. Pour que la commande soit reconnue, il faut également avoir chargé le module scalasca dans votre job.

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_NPROC_TYPE (pour SCALASCA 1.4.3)
scorep_NOMAPPLI_NPROC_TYPE (pour SCALASCA 2.x)

avec

  • NOMAPPLI, le nom de l'exécutable,
  • NPROC, le nombre de processus (ou nombre de processus x nombre de threads en OpenMP ou hybride),
  • 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.ll
# @ job_name = scalasca_run
# @ output = $(job_name).$(jobid)
# @ error = $(output)
# @ job_type = parallel
# @ total_tasks = 8
# @ wall_clock_limit = 1:00:00
# @ queue
 
set -x
 
module load scalasca
scan -t poe ./my_appli

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

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étique 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 Ada. 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