ARM

From CC Doc
Jump to: navigation, search
This page is a translated version of the page ARM software and the translation is 100% complete.

Other languages:
English • ‎français

Introduction

ARM DDT (auparavant Allinea 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. ARM produit également le profileur MAP pour le code parallèle.

Les modules suivants sont disponibles sur Graham ː

  • ddt-cpu pour déboguer et profiler le code sur CPU;
  • ddt-gpu pour déboguer le code sur GPUs ou sur CPU/GPU.

Le module suivant est disponible sur Niagara :

  • ddt

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'à 512 cœurs pour tous les utilisateurs alors que DDT-GPU ne peut utiliser que 8 GPU.

Utilisation

Avec CPU seulement (aucun GPU)

1. 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.

 salloc --x11 --time=0-1:00 --mem-per-cpu=4G --ntasks=4

2. Chargez le module approprié, par exemple

module load ddt-cpu

3. Lancez la commande ddt ou map.

 ddt path/to/code
 map path/to/code
Avant de cliquer sur Run, assurez-vous que l'implémentation MPI est l'OpenMPI par défaut dans la fenêtre DDT/MAP. Si ce n'est pas le cas, cliquez sur le bouton Change (près de Implementation) et sélectionnez l'option correcte dans le menu déroulant. Spécifiez aussi le nombre de cœurs-CPU dans cette fenêtre.

4. Quittez l'interpréteur pour terminer l'allocation.

IMPORTANT ː Les versions courantes de DDT et OpenMPI ont un problème de compatibilité qui fait en sorte que DDT ne peut pas afficher les queues de messages (menu déroulant Tools). Pour contourner ce problème, lancez la commande

$ export OMPI_MCA_pml=ob1

Comme ceci peut ralentir le code MPI, n'utilisez cette commande qu'en débogage.

CUDA

1. 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.

 salloc --x11 --time=0-1:00 --mem-per-cpu=4G --ntasks=1 --gres=gpu:1

2. Chargez le module approprié, par exemple

module load ddt-gpu
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 et chargez ensuite de nouveau le module ddt-gpu.
 module load openmpi/2.0.2
 module load ddt-gpu

3. Assurez-vous qu'un module CUDA est chargé.

 module load cuda

4. Lancez la commande ddt.

 ddt path/to/code

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).

export ALLINEA_FORCE_CUDA_VERSION=10.1

5. Quittez l'interpréteur pour terminer l'allocation.

Problèmes connus

Si vous avez des problèmes avec X11 sur Graham, 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

 ls -ld /home/$USER

Le résultat devrait commencer par

 drwx------

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.

 chmod go-rx /home/$USER

Quand vous avez terminé avec DDT, vous pourrez au choix revenir aux permissions antérieures (en supposant que vous les avez notées). Pour plus d'information, voyez Partage de données.

Références

Message Passing Interface