I2c - Programmation hybride et multi-coeurs

La course à la puissance des ordinateurs est désormais couplée avec une maîtrise de la consommation de l'énergie et l'impact environnemental. Ainsi, les machines sont désormais des supercalculateurs à plusieurs dizaines, voire centaines, de milliers de processeurs multi cœurs mais également couplés avec des accélérateurs (le meilleur exemple étant la machine la plus puissante au monde qui est une machine hybride). Ces nouvelles architectures amènent à repenser la façon dont les programmes de simulation sont écrits. Ainsi, on peut imaginer que l'utilisation de la seule bibliothèque MPI pourra être limitée par un trop grand nombre de tâches à gérer simultanément, et qu'il faut alors utiliser plusieurs niveaux de parallélisme. Après une introduction rapide à ces évolutions d'architectures et de modèles de programmation, on présentera dans ce cadre la programmation "hybride" MPI + OpenMP dont le principe est d'utiliser des échanges explicites de messages entre processeurs (via MPI) et un modèle multi-thread à mémoire partagée (via OpenMP) entre les cœurs des processeurs qui partagent la même mémoire.

 

Dans une deuxième partie du cours, on présentera une autre façon de programmer des machines hybrides, qui utilisent des accélérateurs de calcul à base de processeurs de cartes graphiques (GPU). On rappellera comment en quelques années les GPU se sont transformés de puces dédiés aux fonctions graphiques en processeurs massivement parallèles (Single Instruction Multiple Threads) que l'on programme en langage haut-niveau (C/C++). A travers l'exemple de l'architecture CUDA (Compute Unified Device Architecture) de Nvidia, on présentera le modèle d'exécution et de programmation de ces processeurs et leurs limitations. On étudiera enfin quelques cas concrets d'accélération d'algorithmes sur GPU montrant comment exploiter au mieux leur puissance de calcul (jusqu'à 1TFlops par GPU de dernière génération).

 

Ces calculateurs hybrides sont de plus en plus utilisés, comme en témoigne l'installation au CEA/CCRT d'un supercalculateur d'une puissance de 100 Tflop/s en CPU auxquels viennent s'ajouter 200 Tflop/s en GPU.

 

last update : 11-24 00:00:00-2010 (71)

 
Retour en haut