Debugging and profiling/fr
Une étape importante en développement logiciel, particulièrement en Fortran et C/C++, est l'utilisation d'un logiciel de débogage pour détecter et identifier l'origine des erreurs d'exécution (par exemple les fuites de mémoire, les exceptions de virgule flottante, etc.). Après avoir éliminé les erreurs, la prochaine étape est d'utiliser un logiciel de profilage pour déterminer le pourcentage du temps d'exécution pour chacune des sections du code source avec un scénario de test représentatif. Un profileur peut fournir de l'information sur le nombre de fois qu'une fonction est appelée, quelles sont les fonctions qui l'appellent ou encore combien de millisecondes en moyenne coûte chaque appel.
Déboguer sur une grappe¶
Puisque les sessions de débogage sur les nœuds de connexion sont à éviter, il faut plutôt passer par une tâche interactive. Les options sont :
- utiliser la commande Slurm
salloc ...; voir Tâches interactives; - ouvrir une session JupyterLab; voir Lancer JupyterLab pour les instructions de connexion et pour connaître les applications préconstruites;
- démarrer une session de bureau distant pour faire du profilage visuel; voir cette partie de la page JupyterLab ou les références pour Trillium ou Nibi dans la page Open OnDemand.
Outils¶
Nos grappes offrent un choix de débogueurs et de profileurs pour effectuer le travail en mode graphique par connexion X11 ou en mode ligne de commande.
Débogueur GNU (gdb)¶
Voir GDB.
Débogueur PGI (pgdb)¶
Voir PGDBG.
Débogueur ARM (ddt)¶
Voir ARM.
Profileur GNU (gprof)¶
Voir Gprof.
Profileur Scalasca (scalasca, scorep, cube)¶
Scalasca est un ensemble d'outils open source avec une interface graphique pour le profilage parallèle avec GPU. Ces outils sont disponibles pour gcc 9.3.0 et OpenMPI 4.0.3, dans des architectures AVX2 et AVX512. Chargez l'environnement avec
La version courante est 2.5. Vous trouverez plus d'information et des exemples de flux de travail dans Scalasca User Guide.
Profileur PGI (pgprof)¶
Voir Pgprof.
Profileur Nvidia en ligne de commande (nvprof)¶
Voir nvprof.
Valgrind¶
Voir Valgrind.
Autres références¶
- Introduction to (Parallel) Performance, SciNet
- Code profiling on Graham (vidéo de 54 minutes), SHARCNET