ARM software/fr
Introduction¶
Linaro DDT (auparavant ARM DDT) est un outil commercial puissant pour le débogage de code parallèle. Doté d'une interface utilisateur graphique, il sert au débogage en C, C++ et Fortran des applications en série, MPI, multifils, CUDA ou toute combinaison de ces types. Linaro offre également le profileur MAP pour le code parallèle.
Les modules suivants sont disponibles sur Nibi et Trillium (quand le module StdEnv est chargé) : * ddt-cpu pour déboguer et profiler le code sur le CPU; * ddt-gpu pour déboguer le code sur les GPU ou sur CPU/GPU.
Puisqu'il s'agit d'une application avec une interface graphique, connectez-vous avec ssh -Y et utilisez un client SSH comme MobaXTerm (sous Windows) ou XQuartz (sous Mac) pour assurer la redirection X11.
On utilise généralement DDT et MAP de façon interactive via l'interface utilisateur avec la commande salloc. Le profileur MAP peut aussi être utilisé de façon non interactive en soumettant des tâches à l'ordonnanceur avec la commande sbatch.
Avec la licence actuelle, DDT/MAP peuvent utiliser concurremment jusqu'à 64 CPU pour tous les utilisateurs, alors que DDT-GPU ne peut utiliser que 8 GPU.
Utilisation¶
Avec le CPU seulement (aucun GPU)¶
-
Allouez le ou les nœuds sur lesquels vous voulez déboguer ou profiler; ceci ouvre une session de l'interpréteur (shell) sur les nœuds en question.
-
Chargez le module approprié, par exemple :
-
Lancez la commande ddt ou map.
Note
Avant de cliquer sur « Run », assurez-vous que l'implémentation MPI est l'OpenMPI par défaut dans la fenêtre de DDT/MAP. Si ce n'est pas le cas, cliquez sur le bouton « Modifier » (près de « Implémentation ») et sélectionnez l'option correcte dans le menu déroulant. Spécifiez aussi le nombre de cœurs de CPU dans cette fenêtre.
- Quittez l'interpréteur pour terminer l'allocation.
Important
Les versions courantes de DDT et OpenMPI ont un problème de compatibilité qui empêche DDT d'afficher les files de messages (menu déroulant « Outils »). Pour contourner ce problème, lancez la commande :
Comme ceci peut ralentir le code MPI, n'utilisez cette commande qu'en débogage.
Avec CUDA¶
-
Allouez le ou les nœuds sur lesquels vous voulez déboguer ou profiler avec
salloc; ceci ouvre une session de l'interpréteur (shell) sur les nœuds en question. -
Chargez le module approprié, par exemple :
Tip
Il est possible qu'on vous demande de charger d'abord une version antérieure d'OpenMPI. Dans ce cas, chargez de nouveau le module OpenMPI en utilisant la commande proposée, puis chargez de nouveau le module ddt-gpu.
-
Assurez-vous qu'un module CUDA est chargé.
-
Lancez la commande ddt.
Si DDT crée des difficultés en raison d'une incompatibilité entre le pilote CUDA et la version de la boîte d'outils, exécutez la commande suivante et lancez DDT de nouveau (utiliser la même version que dans la commande).
-
Quittez l'interpréteur pour terminer l'allocation.
Problème de latence¶
Tip
Les directives ci-dessus utilisent la redirection X-11 qui s'avère très sensible au problème de latence des paquets. Si vous n'êtes pas sur le même campus que le supercalculateur, l'interface de DDT sera probablement lente et occasionnera de la frustration. Pour remédier à ce problème, utilisez DDT sous VNC.
Pour ce faire, préparez une session VNC. Si votre session VNC se trouve sur le nœud de calcul, vous pouvez démarrer votre programme ddt directement, comme décrit ci-dessus. Si votre session VNC se trouve sur le nœud de connexion ou si vous utilisez le nœud VDI de Graham, vous devez lancer la tâche à partir de l'écran de démarrage de DDT comme suit :
- sélectionnez l'option « Lancer le backend vous-même manuellement » pour le lancement de la tâche;
- entrez les renseignements de votre tâche et cliquez sur le bouton « Écouter »;
- cliquez sur le bouton « Aide » à droite de « En attente du démarrage de la tâche... ».
Ceci vous donnera la commande à utiliser pour lancer votre tâche. Allouez une tâche sur le supercalculateur et démarrez votre programme tel qu'indiqué. Dans l'exemple suivant, $USER est votre nom d'utilisateur et $PROGRAM est la commande pour démarrer votre programme.
[nom@grappe-connexion:~]$ salloc ...
[nom@nœud-grappe:~]$ /cvmfs/restricted.computecanada.ca/easybuild/software/2020/Core/allinea/20.2/bin/forge-client --ddtsessionfile /home/$USER/.allinea/session/gra-vdi3-1 $PROGRAM ...
Problèmes connus¶
Warning
Si vous avez des problèmes avec X11, modifiez les permissions de votre répertoire /home pour que l'accès soit possible uniquement par vous.
D'abord, vérifiez (et notez au besoin) les permissions courantes avec :
Le résultat devrait commencer par : Si certains tirets sont remplacés par des lettres, votre groupe et les autres utilisateurs ont des permissions de lecture, écriture (peu probable) ou exécution pour votre répertoire.La commande suivante supprimera les permissions de lecture et exécution pour le groupe et les autres utilisateurs.
Quand vous aurez terminé avec DDT, vous pourrez, au choix, revenir aux permissions antérieures (en supposant que vous les avez notées). Pour plus d'information, consultez Partage de données.Pour plus d'information¶
- "Debugging your code with DDT" (vidéo d'une durée de 55 minutes)
- Parallel debugging with DDT (court tutoriel)