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

Déboguer

Avant d’optimiser, il faut avoir un code exempt de bogues : le débogueur totalview 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" :

  • Pour un code openMP, on peut utiliser Vtune
  • Plusieurs outils permettent de profiler un code MPI :

Améliorer les communications mpi

si vous utilisez la version BullxMPI de la bibliothèque MPI, vous pouvez (la plupart du temps) améliorer grandement les performances de votre code en utilisant la couche MXM

Améliorer les performances grâce à la MKL

La MKL (bibliothèque d’Intel) permet souvent d’améliorer les performances. Elle comprend BLAS, LAPACK, ScaLAPACK... :

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)
Les articles de cette rubrique

Stratégie « First Touch » Les aspects NUMA sont à considérer plus particulièrement lorsqu’on utilise un parallélisme en mémoire partagée (OpenMP). Sur (...)
Lire l'article ...
Article mis en ligne le 17 mai 2017
Architecture des nœuds de calcul Le supercalculateur Eos est constitué de 612 nœuds bi-sockets. Chaque socket est constitué d’un processeur (...)
Lire l'article ...
Article mis en ligne le 15 mai 2017
dernière modification le 17 mai 2017
Dans cet article nous indiquons la manière d’utiliser l’outil Intel MPS sur le système EOS. Pré-requis : l’application doit être compilée avec la (...)
Lire l'article ...
Article mis en ligne le 7 mars 2016
dernière modification le 7 avril 2017
ITAC est ou outil graphique permettant d’analyser le profil de communication d’un code parallélisé avec la librairie MPI. ITAC s’utilise en deux (...)
Lire l'article ...
Article mis en ligne le 18 janvier 2016
dernière modification le 25 juillet 2017
Description et utilisation de vtune amplifier (outil de profilage multithreadé d’intel)
Lire l'article ...
Article mis en ligne le 30 octobre 2014
dernière modification le 26 octobre 2017
A travers des exemples nous montrons le moyens d’exécuter des jobs Mixte MPI+OpenMP, en attachement explicitement les processus et les threads aux (...)
Lire l'article ...
Article mis en ligne le 15 octobre 2014
dernière modification le 4 avril 2017
On peut également placer les tâches sur des cores spécifiques en utilisant CPU_MASK. Cette variable permet de placer les différentes tâches sur des (...)
Lire l'article ...
Article mis en ligne le 5 septembre 2014
dernière modification le 18 janvier 2016
On peut également placer les tâches sur des cores spécifiques en utilisant numactl. ATTENTION avec numactl, il faut que les cores alloués soient (...)
Lire l'article ...
Article mis en ligne le 3 septembre 2014
Pour des raisons de besoins mémoire par processus MPI ou de nombre de processus MPI égal à une puissance de 2, il peut être intéressant ou nécessaire (...)
Lire l'article ...
Article mis en ligne le 23 juillet 2014
dernière modification le 9 mars 2016
L’architecture d’EOS, avec ses cœurs physiques et ses cœurs logiques, peut impliquer de devoir placer vos tâches mpi et/ou vos threads OpenMP de (...)
Lire l'article ...
Article mis en ligne le 9 juillet 2014
dernière modification le 7 avril 2017



Site réalisé sous SPIP
avec le squelette ESCAL-V3
Version : 3.86.44
Hébergeur : INP Toulouse