Transcript MIMD
Calcul intensif Jean-Pierre Gallou Centre Interuniversitaire de Calcul de Toulouse Stage de formation au calcul parallèle dans le domaine scientifique CICT Calcul Intensif 1 Programme CICT Introduction Programme Puissance Puissance (2) Calcul vectoriel Calcul // Calcul // (2) Calcul // (3) Types de //isme Types de //isme: SIMD Calcul Intensif 2 Programme (suite) CICT Types de //isme: MIMD MIMD Mémoire partagée (SMP) MIMD Mémoire partagée (2) MIMD Mémoire distribuée MIMD Mémoire distribuée (2) MIMD Mémoire distribuée (3) Le point de vue du programmeur Envoi de messages Pour obtenir plus d’informations Calcul Intensif 3 Introduction CICT Cadre et rapide historique du calcul intensif Pourquoi du calcul intensif ? • algorithmes de + en + complexes, de + en + gourmands • problèmes de + grande taille, avec une résolution + fine Domaine scientifique, autres domaines Considérations générales : puissance Calcul vectoriel Calcul //, divers types de //isme Calcul Intensif Matériel et logiciels 4 Puissance CICT Puissance théorique (celle annoncée), pratique (peut être très inférieure) MFlops, millions d'instructions en calcul flottant par seconde, 32 ou 64 b. Problèmes requérant une grande puissance : prévision du climat, météo, circulation océanique, dynamique des fluides, vision, simulation de phénomènes physiques complexes, etc. Calcul Intensif 5 Puissance (2) CICT Nombreuses techniques : pipeline, vectorisation, chaînage, multiplication des unités fonctionnelles, accès mémoire rapides (caches), processeurs RISC,... Puissance des calculateurs monoprocesseurs limitée Parallélisme par obligation Calcul Intensif 6 Calcul vectoriel CICT Idée : concevoir des UC agissant sur des vecteurs (tableaux linéaires de nombres) et non sur des scalaires Programmation dans langage standard, vectorisation automatique (boucle DO <--> op. vectorielle) op. vectorielle élimine test, boucle, … Type : CRAY Calcul Intensif 7 Calcul // CICT Idée : utiliser plusieurs UC, éventuellement en grand nombre Grosses difficultés : • nombreux codes séquentiels, inadaptés au calcul // • Dépendance des données (plusieurs types) • Calcul // ==> programmes adaptés à la structure de la machine Calcul Intensif 8 Calcul // (2) CICT Granularité • Rapport entre temps calcul et temps communication • Gros grains : chaque processeur peut effectuer beaucoup de calculs avant de communiquer avec les autres • Grain fin : communication fréquente Calcul Intensif 9 Calcul // (3) Surcharge (overhead) Accélération (speedup) Loi d’Amdahl – Si un code comporte des parties non parallélisables importantes, le gain est vite limité. – 10% séquentiel ==> speedup max de 10 CICT Extensibilité (scalability) Calcul Intensif 10 Types de //isme CICT SIMD MIMD • mémoire partagée • mémoire distribuée SPMD équivalent à MIMD Calcul Intensif 11 Types de //isme: SIMD Une instruction s’exécute sur n processeurs traitant chacun un élément d’un vecteur (Single Instruction, Multiple Data) Connection machine, Maspar (DEC) P P P P P P P Très spécifique P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P CICT Calcul Intensif 12 Types de //isme: MIMD CICT Chaque processeur exécute son programme sur ses données Multiple Instruction, Multiple Data Synchronisation Echanges de données Calcul Intensif 13 MIMD Mémoire partagée (SMP) Limité en nb de processeurs (16, 64) Problèmes d’architecture et construction de la mémoire critiques CRAY-2, Y-MP, C90, IBM ES/9000, … Mémoire Communication P CICT P P Calcul Intensif P P 14 MIMD Mémoire partagée (2) CICT Plus simple pour le programmeur : chaque programme a accès à l’ensemble des données Réalisation logicielle : threads Librairie C, directives fortran Il existe des paralléliseurs automatiques de code fortran Calcul Intensif 15 MIMD Mémoire distribuée Non limité en nombre de processeurs (MPP). Topologie de communication : hypercube, etc. CRAY T3E, IBM SP/2 … Communication CICT P P P P P M M M M M Calcul Intensif 16 MIMD Mémoire distribuée (2) CICT S’adapte à des machines différentes • processeurs, standard ou non, reliés par architecture de communication spéciale • grappes (clusters) • machines distantes sur réseau Problèmes de communication entre processeurs critiques Calcul Intensif 17 MIMD Mémoire distribuée (3) CICT Moins simple pour le programmeur : programmer l’accès aux données distantes Réalisation logicielle : message passing Peu de progiciels, peu de librairies mathématiques. Au niveau élémentaire : PVM, P4, MPI, Express, etc. Problèmes non traités, à prendre en compte : répartition de charge, … Calcul Intensif 18 Le point de vue du programmeur CICT Difficulté : pas de standard • plusieurs modèles de programmation (mémoire partagée ou non, répartir les données ou les traitements, ...) // implicite • automatique (boucles DO) • OpenMP // explicite (messages, …) Certaines architectures bonnes pour certains problèmes Pas de bonne solution universelle Calcul Intensif 19 Envoi de messages CICT PVM, puis MPI bibliothèques de fonctions C, Fortran77 (C++, F90) Indépendant de la plate-forme MPI-2 domaine public Calcul Intensif 20 Pour obtenir plus d’informations CICT news:comp.parallel, news:comp.parallel.pvm news:comp.parallel.mpi http://www.irisa.fr/orap/ http://www.hensa.ac.uk/parallel/environments/ pvm3/ Calcul Intensif 21