Vous trouverez dans cette rubrique différents moyens de déboguer votre application, d’améliorer les performances et d’optimiser un calcul sur le système de calcul Olympe.
Compiler
Quel compilateur utiliser, que font les wrappers mpi ?
Déboguer
Avant d’optimiser, il faut avoir un code exempt de bogues : le débogueur ddt peut vous aider à déboguer votre code
Mesurer
Le code étant débogué, un profilage lors de l’exécution sur des jeux de données tests vous permettra d’identifier les "points chauds". La liste suivante explique dans quel ordre il est préférable d’utiliser ces outils.
- APS, Application Performance Snapshot Un outil Intel permettant d’avoir en un coup d’œil une idée générale du profil de votre code. Vous aurez des données sur les E/S, les unités de calcul, l’utilisation de la mémoire, et les appels mpi. A utiliser en premier.
- map (un outil arm) vous donnera les mêmes informations, mais vous verrez en plus leur évolution au cours du temps, et vous pourrez faire le lien entre ce que vous mesurez et votre code.
- S’il semble y avoir un problème du côté de mpi :
- Bull MPI Lightweight Profiler (outil Bull/Atos) donne des informations synthétiques intégrées à la sortie standard.
- Intel Trace Analyzer Collector (ITAC, outil graphique d’Intel(r)) peut vous donner des informations plus fines.
- Si vous souhaitez investiguer l’utilisation de la mémoire, l’outil Intel inspector peut vous aider (doc à venir)
- Si le problème vient plutôt de l’utilisation des unités de calcul, vous pouvez utiliser deux outils intel1
Améliorer: la MKL
La MKL (bibliothèque d’Intel) permet souvent d’améliorer les performances. Elle comprend BLAS, LAPACK, ScaLAPACK... :
Placer les processus sur les cœurs de calcul
- La stratégie First Touch
- Particulièrement important dans le cas des jobs hybrides (mpi-opnmp): Placer (ou attacher) des processus
- Utilisation du lanceur srun en mode "multi-programmes"
Vectoriser
La vectorisation permet de tirer partie des processeurs Intel les plus récents, en leur permettant d’exécuter un grand nombre d’opérations simultanément (additions et multiplications sur des vecteurs).
- A télécharger: une présentation générale de la vectorisation (en anglais)
- Comment activer les instructions de vectorisation lors de la compilation de votre code ?
- En pratique, quel gain peut-on en attendre ?
- Utilisation pratique de la vectorisation
- Vectorisation et Intensité Arithmétique : un article théorique et un tutoriel pratique
- Vector Advisor, un outil Intel d’aide à la vectorisation.
1- Attention, vtune et adviser ne vous diront rien sur mpi, ils sont limités à un seul nœud