Babel : Totalview

Description

Totalview est un débogueur parallèle graphique. Il supporte la bibliothèque d'échange de messages MPI ainsi qu'OpenMP et les applications multithreadées avec pthreads.

Versions installées

  • 8.9.1-0 (version par défaut)
  • 8.7.0-2
  • 8.6.0-1 (ancienne version par défaut, dite old)

Utilisation

La commande module permet d'accéder aux différentes versions. Pour accéder à la version par défaut, il suffit de taper :

module load tv

Pour accéder à la version old, il faut lancer la commande :

module load totalview/old

Pour exécuter en batch avec la version par défaut sur 256 coeurs :

# @ job_name = test_totalview
# @ 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 = 20:00
# Nombre de processeurs
# @ bg_size = 64
# @ queue

# Pour avoir l'echo des commandes
set -x

# Pour se mettre dans le repertoire d'ou on a soumis ce job :
cd $LOADL_STEP_INITDIR

export DISPLAY=mon_ecran:0
module load totalview

tv mpirun -a -mode VN -mapfile TXYZ -np 256 -exe ./mon_executable -args 'mes_arguments'

Dans un premier temps, Totalview affiche des informations relatives à son initialisation :

Fenetre_Initialisation

cliquer sur OK, puis cliquer dans la fenêtre principale cliquez sur la flèche verte Go. Enfin Totalview demande si l'on veut s'arrêter juste avant le démarrage de l'exécutable proprement dit (pour positionner des points d'arrêt par exemple) : il faut cliquer sur Yes. Le source de l'exécutable s'affiche alors dans la fenêtre principale. Vous pouvez alors, par exemple, positionner un point d'arrêt et démarrer l'exécution en cliquant à nouveau sur la flèche verte Go .

Remarques

  • Totalview démarre une interface graphique XWindows : il faut donc que vous ayez préalablement positionné la variable DISPLAY correspondant à votre écran et autorisé l'affichage d'une fenêtre X-Window sur celui-ci.
  • Pour pouvoir déboguer votre application, celle-ci doit avoir été compilée avec l'option -g du compilateur (option activée par défaut à l'IDRIS). L'option -qfullpath est également conseillée. D'autres options peuvent vous être utile, voir ici pour un code Fortran et ici pour une application C/C++.
  • Totalview ne peut pas être utilisé en mode interactif sur Babel. Il vous faut soumettre un job en suivant l'exemple ci-dessus.

Pour faire du débogage mémoire : il est nécessaire de faire l'édition de liens avec une bibliothèque dite d'interposition, qui lors d'une allocation mémoire va donner l'information au déboggeur avant de faire l'allocation demandée. Il vous faut recompiler votre exécutable avec les instructions supplémentaires suivantes à l'édition de liens :

  1. L/bglocal/prod/TotalView/8.9.1-0/linux-power/lib -ltvheap_bluegene_p

Dans la fenêtre d'initialisation de Totalview, au lieu de cliquer sur OK comme ci-dessus, vous devez cocher la case Enable Memory Debugging

Fenetre_Initialisation

et, le cas écheant, décocher Halt on memory errors, qui est inutile si vous n'avez pas de problème bloquant mais voulez recueillir des statistiques sur votre occupation mémoire, par exemple. Ces statistiques sont disponibles en ouvrant la fenêtre MemoryScape depuis un menu de la fenêtre principale : Debug → Open MemoryScape.

Documentation

L'ensemble des documents en version PDF de la toute dernière version sortie est disponible sur le serveur d'Etnus; il est possible que celle installée soit légèrement plus ancienne, si la nouvelle ne corrige aucun bug connu sur BlueGene.

Nous mettons aussi directement à disposition les documents PDF concernant la version par défaut 8.9.1 installée sur Babel, en anglais eux aussi :