Améliorer les performances

Améliorer les performances de vos codes

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 :
    • MPIPROF (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 intel [1].

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

Présentation générale de la vectorisation sur les processeurs Intel (en Anglais)
Notes :

[1Attention, ces deux outils ne vous diront rien sur mpi, ils sont limités à un seul nœud

Les articles de cette rubrique

Il peut arriver que l’on ai besoin de lier plusieurs exécutables différents au sein d’un unique lancement MPI, de sorte à ce que des processus issus (...)
Lire l’article ...
Article mis en ligne le 15 juillet 2019