Turing : Totalview

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.

TotalView

Compilation

Votre programme doit être compilé avec l'option -g. Sur Turing, cette option est activée par défaut, nous n'avez donc pas à la rajouter. Par contre, l'option -qfullpath est conseillée. Une liste complète des options de débogage des compilateurs IBM est disponible sur cette page.

Lancement de TotalView

Déport d'affichage

TotalView est un débogueur graphique (XWindows). Pour bénéficier du mode graphique, il est nécessaire de mettre en place un déport d'affichage de l'IDRIS à votre terminal ; contactez la Permanence de l'Assistance en cas d'échec avéré. Il est aussi possible de lancer TotalView sans interface graphique en utilisant la commande tvcli mais cela réduit fortement l'intérêt de TotalView. L'utilisation de la ligne de commandes est toutefois décrite dans le Guide de référence.

Lancement en batch parallèle

L'exécution d'un programme parallèle en interactif sur Turing n'est pas possible. Pour déboguer, il faut donc obligatoirement soumettre un job. Voici un exemple de soumission batch pour une session de débogage MPI sur 64 cœurs :

job.ll
# @ job_name = TotalView
# @ job_type = BLUEGENE
# @ output = $(job_name).$(jobid)
# @ error = $(output)
# @ wall_clock_limit = 00:30:00
# @ bg_size = 64
# @ environment = $DISPLAY
# @ queue
 
# chargement de la version par defaut
module load tv
 
# apres le module load, sortie de module tres bavarde sinon
set -x
 
xterm -sb -e 'totalview runjob -a --np 64 --ranks-per-node 16 --exe ./mon_executable --args arg1 arg2'

Ce script utilise la commande module pour accéder à TotalView. TotalView est lancé dans un terminal afin de permettre l'affichage de la sortie console du programme. Rappel: en raison de l'architecture matérielle de la machine, les réservations s'effectuent par blocs de 64 nœuds (1024 cœurs). Comme dans l'exemple, il est possible de déboguer en n'utilisant qu'une partie des nœuds alloués, mais l'ensemble des ressources réservées est facturé. Il faut aussi faire attention de ne pas laisser une session de débogage ouverte inutilement (vérification possible avec llq -u mon_login).

Attention : il est possible, en demandant 4096 tâches, de monopoliser l'ensemble des jetons de la license TotalView avec un seul test : en cas de message répété de problème de license, ou si vous avez besoin d'une session de débogage exceptionnelle 4096 tâches ou plus, merci de contacter la Permanence de l'Assistance.

Utilisation de TotalView

Lorsque les paramètres (nombre de cœurs, nom de l'exécutable et arguments) ont été indiqué sur la ligne de commande, il n'est pas utile de remplir les onglets Arguments et Parallel de la fenêtre Startup Parameter qui s'affiche au démarrage. La fenêtre peut donc être fermée directement.

Fenetre_Initialisation

Pour lancer le débogage, cliquez sur la flèche verte Go de la barre outils de la fenêtre principale. Totalview demande alors si l'on veut s'arrêter juste avant l'exécution du programme. En cliquant sur Yes, il est possible de naviguer dans le code source (clique droit sur le nom d'une fonction puis Dive clique gauche) et d'ajouter des points d'arrêts (en cliquant sur les numéro de ligne).

Ressources complémentaires

La documentation complète de TotalView (en anglais) est disponible ici:

Les documentations de la version la plus récente de la documentation de TotalView sont disponibles sur le site de l'éditeur Rogue Wave :