I. Introduction Quelques définitions (qu est-ce qu une machine parallèle, un programme parallèle, pourquoi le parallélisme?) Différents types d architectures parallèles Programmation parallèle Mesure du parallélisme Limitations du parallélisme Langages et outils Complément: notions de vectorisation Marie Flé - C.R.I. - 1 - Généralités Parallélisme 18/11/2002
II.Quelques définitions Machine parallèle Ensemble formé de processeurs interconnectés Programme parallèle But: Programme pouvant s exécuter simultanément sur plusieurs processeurs de manière à effectuer un travail commun. augmenter les performances des programmes augmenter pour un même programme la taille des données et le nombre de calculs écrire des programmes inconcevables sur une machine séquentielle Marie Flé - C.R.I. - 2 - Généralités Parallélisme 18/11/2002
III. Types d architectures parallèles Machines à mémoire distribuée (IBMSP2, CRAYT3E) homogènes Machines à mémoire partagée (Cray YMP, Xeon, SGI O2000: 2 processeurs) hétérogènes (réseau de stations de travail) Machines à mémoire distribuée, globalement adressable (Tera MTA, SGI O2000) IV. Marie Flé - C.R.I. - 3 - Généralités Parallélisme 18/11/2002
V.Programmation parallèle Contraintes du parallélisme Différents types de parallélisme Modèles de programmation Quelques conseils pour la programmation parallèle Parallélisation des itérations : étude des dépendances Distribution des tableaux Marie Flé - C.R.I. - 4 - Généralités Parallélisme 18/11/2002
A.Contraintes du parallélisme Programme parallèle : Programme pouvant s exécuter simultanément sur plusieurs processeurs de manière à effectuer un travail commun. On considère une application séquentielle comme constituée par des actions indépendantes les unes des autres donc pouvant être effectuées simultanément sur des processeurs différents Dépendances 2 tâches sont dépendantes si les données de l une sont modifiées par l autre Synchronisation Ordre dans lequel les processeurs exécutent les tâches pour respecter les dépendances Communication Echanger les données entre les processeurs (machines distribuées) Marie Flé - C.R.I. - 5 - Généralités Parallélisme 18/11/2002
B. C.Différents types de parallélisme Parallélisme de contrôle ou de tâche : apparaît lorsque plusieurs actions sont indépendantes et peuvent être exécutées simultanément dégager les parties indépendantes du programme et construire le graphe des dépendances entre ces tâches. Répartir ces tâches sur les processeurs et les synchroniser de manière optimale (problème d allocation de ressources) Parallélisme de données : apparait lorsque la même action est répétée sur des données différentes, de type identique (traitement d un tableau dans une itération) Marie Flé - C.R.I. - 6 - Généralités Parallélisme 18/11/2002
0do i=1,n 1 a(i)=b(i)+ c(i) 2enddo En programmation distribuée, les données sont réparties aux processeurs et chaque processeur exécute cette action sur les données qui lui appartiennent. La répartition du travail est alors gérée par la position des données sur les processeurs D.Modèles de programmation Caractérise le langage de programmation SPMD («single program, multiple data») : le même programme s exécute sur tous les processeurs qui travaillent sur des données différentes adapté au parallélisme de données Marie Flé - C.R.I. - 7 - Généralités Parallélisme 18/11/2002
MIMD («multiple instructions, multiple data») : des programmes différents s exécutent sur les processeurs adapté au parallélisme de tâches Remarque: On peut faire du parallélisme de tâches en mode SPMD et vice-versa Marie Flé - C.R.I. - 8 - Généralités Parallélisme 18/11/2002
E.Quelques conseils pour la programmation parallèle Pas d approche standard En général, on parallélise un programme séquentiel existant Avant de paralléliser : optimiser le programme séquentiel options du compilateur étude des boucles (cache) Différentes possibilités : utiliser un paralléliseur utiliser des bibliothèques parallèles recoder repérer les parties consommatrices de CPU avec un analyseur («profiler»), en général les itérations dégager parallélisme de tâches dégager parallélisme de données analyser les dépendances Marie Flé - C.R.I. - 9 - Généralités Parallélisme 18/11/2002
choisir le mode de programmation et le langage le mieux adapté modifier l'algorithme et le concevoir en parallèle F.Parallélisation des itérations : étude des dépendances 1. Parallélisation d une itération Exemple : do i=1, 4 a(i)=b(i) enddo sur 2 processeurs En programmation distribuée: distribution des données sur les processeurs 0P0: 1A(1:2) 2B(1:2) 3P1: 4A(3:4) 5B(3:4) répartition du travail sur les processeurs: Marie Flé - C.R.I. - 10 - Généralités Parallélisme 18/11/2002
6P0: 7do i=1,2 8 A(i)=B(i) 9enddo 10P1: 11do i=3,4 12 A(i)=B(i) 13enddo En programmation partagée: répartition du travail sur les processeurs Marie Flé - C.R.I. - 11 - Généralités Parallélisme 18/11/2002
2. Notion de dépendance 14Définition: Une boucle est parallélisable s il n y a pas de dépendance entre les itérations; deux itérations sont dépendantes si une donnée de l une est le résultat de l autre. 15 Exemple: Remarques: 3do i=2,n 4 A(i)= A(i-1) 5end do Ne pas paralléliser inutilement une boucle qui ne contient pas assez de calcul -> dégradation des performances Au contraire: une boucle peut ne pas être parallélisable à cause d une fausse dépendance Marie Flé - C.R.I. - 12 - Généralités Parallélisme 18/11/2002
3. Examen des indices de boucles 6do i=2,n 7 A(i)= B(i-1) 8end do Parallélisable: (avec communications dans une programmation distribuée) 9do i=1,n 10 A(i)= A(i+M) 11end do Parallélisable si N<M avec communications dans une programmation distribuée sans communication en mémoire partagée Marie Flé - C.R.I. - 13 - Généralités Parallélisme 18/11/2002
4. Analyse des constantes a) Fausse dépendance: variables temporaires 12do i=1,n 13 X=A(i)+B(i) 14 C(i)=X+B(i)*X 15end do Parallélisable: il faut déclarer X comme une variable locale b) Utilisation d indexes 16index=0 17do i=1,n 18 index=index+i 19 A(i)= B(i)+C(index) 20end do Non parallélisable ; cependant, dans ce cas, il est possible de lever la dépendance en transformant le programme et en déclarant index comme variable locale (HPF, OpenMP): Marie Flé - C.R.I. - 14 - Généralités Parallélisme 18/11/2002
21index=0 22do i=1,n 23 index=(i*(i+1))/2 24 A(i)= B(i)+C(index) 25end do Marie Flé - C.R.I. - 15 - Généralités Parallélisme 18/11/2002
5. Réductions 26do i=1,n 27 SUM=A(i)+SU M 28end do Semi-Parallélisable: il y a dépendance mais il est possible de faire calculer des sommes partielles par tous les processeurs et rassembler les résultats à la fin ; Les principaux langages parallèles disposent de ce mécanisme de réduction qu il suffit de déclarer (MPI, HPF, OpenMP) 6. Eclatement des boucles 29do i=n-1,1,-1 30 A(i)=B(i) 31 C(i)=A(i+1) 32end do Parallélisable en HPF, non parallélisable en OpenMP (voir cours correspondants) Remède en OpenMP: éclatement de la boucle Marie Flé - C.R.I. - 16 - Généralités Parallélisme 18/11/2002
33do i=n-1,1,-1 34 A(i)=B(i) 35enddo 36do i=n-1,1,-1 37 C(i)=A(i+1) 38end do Marie Flé - C.R.I. - 17 - Généralités Parallélisme 18/11/2002
G.Distribution des tableaux 1. Distribution par bloc a) Tableaux 1 dimension: 16P0: 17A(1:2) 18P1: 19A(3:4) b) Tableaux multi-dimensions: (i) Distribution par bloc simple 20P0: 21A(1:4,1:4) 24P2: 25A(5:8,1:4) 22P1: 23A(1:4,5:8) 26P3: 27A(1:4,5:8) (ii) Distribution par bloc-ligne 28P0: 29A(1:4,1:8) 30P1: 31A(5:8,1:8) (iii) Distribution par bloc-colonne 32P0: 33A(1:8,1:4) 34P1: 35A(1:8,5:8 ) Marie Flé - C.R.I. - 18 - Généralités Parallélisme 18/11/2002
2. Marie Flé - C.R.I. - 19 - Généralités Parallélisme 18/11/2002
3. Distribution cyclique a) Tableaux 1 dimension: P0: P1: A(1), A(3) A(2),A(4) b) Tableaux multi-dimensions: 36P0: 37A(1,1),A(1,3) 38A(3,1),A(3,3) 42P2: 43A(2,1),A(2,3) 44A(4,1),A(4,3) 39P1: 40A(1,2),A(1,4) 41A(3,2),A(3,4) 45P3: 46A(2,2),A(2,4) 47A(4,2),A(4,4) 4. Distribution bloc-cyclique 5. 48P0: 49A(1,1),A(1,3) 50A(2,1),A(2,3) 54P2: 55A(3,1),A(3,3) 56A(4,1),A(4,3) 51P1: 52A(1,2),A(1,4) 53A(2,2),A(2,4) 57P3: 58A(3,2),A(3,4) 59A(4,2),A(4,4) Marie Flé - C.R.I. - 20 - Généralités Parallélisme 18/11/2002
6. Choix de la distribution Choisir la distribution qui engendre le minimum de communications: Exemple: 39do i=2,n 40 a(i)=b(i-1) 41enddo distribution cyclique: une communication pour chaque itération distribution par bloc: une communication par bloc Marie Flé - C.R.I. - 21 - Généralités Parallélisme 18/11/2002
VI.Mesure du parallélisme Calcul des performances Accélération Efficacité Scalabilité Marie Flé - C.R.I. - 22 - Généralités Parallélisme 18/11/2002
A.Calcul des performances 60Le calcul des performances d un programme parallèle diffère de celui d un programme séquentiel 61En effet, il y a 2 manières de calculer les performances: temps CPU (temps de calcul pur) temps réel (temps de restitution du programme) 62Pour un programme séquentiel, il suffit de calculer le temps CPU 63Pour un programme parallèle, il faut prendre en compte le temps occupé par les synchronisations et les communications; il faut donc calculer le temps réel; or ce temps réel prend aussi en compte le temps des autres processus en exécution si l on travaille en temps partagé. 64Le calcul des performances d un programme parallèle n a donc de sens que sur une machine dédiée. 65Le calcul des performances se fait soit: à l aide de la commande 42time 66qui délivre le temps réél et le temps CPU Marie Flé - C.R.I. - 23 - Généralités Parallélisme 18/11/2002
par l appel à une fonction de calcul du temps réél qui dépend de la machine sur laquelle on travaille Marie Flé - C.R.I. - 24 - Généralités Parallélisme 18/11/2002
B.Accélération Mesure l accroissement de performances d un programme parallèle en fonction du nombre N de processeurs A(N)= T séquentiel /T parallèle (N) Cas idéal (linéaire) quand A(N)=N Marie Flé - C.R.I. - 25 - Généralités Parallélisme 18/11/2002
C.Efficacité Quantifie le degré d utilisation des ressources parallèles : E=A(N) /N D.«Scalabilité» Mesure la capacité d un programme à voir ses performances augmenter en fonction du nombre de processeurs Marie Flé - C.R.I. - 26 - Généralités Parallélisme 18/11/2002
S = T parallèle (k*n) / T parallèle (N) Le programme est «scalable» si S est proche de k 67 Marie Flé - C.R.I. - 27 - Généralités Parallélisme 18/11/2002
VII.Limitations du parallélisme La performance d un programme parallèle par rapport à un programme séquentiel est limitée par : le degré de parallélisme qu il comporte les conséquences de la synchronisation le temps consommé par les communications dans le cas de la programmation distribuée le temps d accès à la mémoire d un autre processeur dans le cas de la programmation mémoire virtuellement partagée la charge des processeurs Marie Flé - C.R.I. - 28 - Généralités Parallélisme 18/11/2002
A.Degré de parallélisme Degré de parallélisme: le nombre d actions qui peuvent s exécuter en parallèle Loi d Amdhal : exprime l accélération théorique d un programme parallèle en fonction de son degré de parallélisme A(N) = T séquentiel /T parallèle (N) Marie Flé - C.R.I. - 29 - Généralités Parallélisme 18/11/2002
On pose : T p = p* T séquentiel et T s =(1-p)* T séquentiel où p est le pourcentage de partie parallèle On suppose : T parallèle =T s +T p /N On obtient: A(N)=1/( (1-p) +(p/n) ) < 1/(1-p) 68Accélération limitée par l inverse de la fraction séquentielle Marie Flé - C.R.I. - 30 - Généralités Parallélisme 18/11/2002
B.Les conséquences de la synchronisation Remède : équilibrer la charge des processeurs Marie Flé - C.R.I. - 31 - Généralités Parallélisme 18/11/2002
C.Le temps consommé par les communications latence : temps pris pour initialiser une communication bande passante : temps de transfert Remèdes : calculer la valeur de la donnée distante au lieu de la recevoir du processeur distant qui la possède calculer pendant les transferts regrouper les communications en un seul transfert Marie Flé - C.R.I. - 32 - Généralités Parallélisme 18/11/2002
D.Charge des processeurs 69Si l exécution d un programme parallèle a lieu en temps partagé et que la charge des processeurs est déséquilibrée, ses performances peuvent être dégradées au point d être moins bonnes que celles du programme séquentiel équivalent. 70Exemple: 72 71 VIII.Langages Langages basés sur Fortran et C Marie Flé - C.R.I. - 33 - Généralités Parallélisme 18/11/2002
Choix du langage Classification suivant l architecture des machines Classification des langages distribués Marie Flé - C.R.I. - 34 - Généralités Parallélisme 18/11/2002
A.Choix du langage Choix suivant l architecture de la machine Compromis entre facilité de programmation portabilité des programmes performances du langage sur une machine donnée modèle de programmation choisi Marie Flé - C.R.I. - 35 - Généralités Parallélisme 18/11/2002
B.Classification suivant l architecture des machines Machines à mémoire distribuée Machines à mémoire partagée et Machines à mémoire distribuée, globalement adressable Langages«Message passing» Langages «Data parallel» Fortran ou C parallel: le standard est OpenMP Langages«Message passing» et Langages «Data parallel» possibles Marie Flé - C.R.I. - 36 - Généralités Parallélisme 18/11/2002
Langages permettant les échanges de messages («Message passing») Le programme est divisé en plusieurs programmes (ou tâches) identiques ou différents qui se synchronisent et communiquent entre eux par des envois et réception de messages explicites (appel à des bibliothèques: PVM, MPI principalement) Langages «Data parallel» (parallélisme de données) Un seul programme s exécute sur tous les processeurs. Les données sont distribuées aux processeurs. Chaque processeur travaille sur ses données locales. L accès à une donnée non locale à un processeur engendre une communication implicite avec celui qui la possède (HPF principalement : Fortran + directives) La synchronisation est elle aussi implicite. Fortran ou C parallel type OpenMP Le programme est divisé en régions séquentielles et parallèles Le programme s exécute selon le modèle maître/esclave (threads) Le maître distribue le travail aux esclaves lorsqu il rencontre une région parallèle Marie Flé - C.R.I. - 37 - Généralités Parallélisme 18/11/2002
Les threads ont accès à toute la mémoire; 2 types de variables : partagées: modifiables par tous les threads privées: modifiables par un seul thread C.Classification des langages distribués PVM MPI HPF Marie Flé - C.R.I. - 38 - Généralités Parallélisme 18/11/2002
Modèle MIMD Utilisable en milieu hétérogène Messages explicites Portable Gestion dynamique des processus Modèle SPMD Utilisable en milieu hétérogène Messages explicites Portable Futur standard Plus évolué que PVM Modèle SPMD Non utilisable en milieu hétérogène Messages implicites Portable N existe pas sur toutes les machines Beaucoup moins performant que PVM et MPI Plus facile à programmer Plus difficile à bien programmer IX. Marie Flé - C.R.I. - 39 - Généralités Parallélisme 18/11/2002
X.Compilateurs et bibliothèques existants Chaque constructeur possède un compilateur ou une bibliothèque «propriétaire» dont l implémentation est optimisée pour cette machine. Par ailleurs, il existe pour chaque type de parallélisme, des bibliothèques et compilateurs standard: HPF: pghpf (Portland group) MPI: MPICH PVM standard Langages pour mémoire partagée: OpenMP Marie Flé - C.R.I. - 40 - Généralités Parallélisme 18/11/2002
XI. Outils Debuggers Paralléliseurs xpvm: debugger pour PVM xpdbx: debugger pour HPF et MPI xldb: debugger pour MPI sur IBM Adaptor (domaine public) Forge90 Bibliothèques scientifiques parallèles NAG PVM SCALAPACK (LAPACK PVM) PBLAS Outils d aide à la programmation PVM Hence : "Visual PVM Programming": aide à la construction de programmes PVM Paragraph : outil de trace d'exécution Marie Flé - C.R.I. - 41 - Généralités Parallélisme 18/11/2002
Analyse des performances pgprof: analyse des programmes HPF de PGI (pghpf) prodev: analyse des programmes sur SGI Marie Flé - C.R.I. - 42 - Généralités Parallélisme 18/11/2002
XII.Annexe : Description des machines utilisées pour les exercices A.SP2 d IBM 73 Machine parallèle à mémoire distribuée 12 processeurs P2SC Système AIX interconnectés par swich HPS (high performance switch) réseau Ethernet Marie Flé - C.R.I. - 43 - Généralités Parallélisme 18/11/2002
B.Origin 2000 de Silicon Graphics Machine parallèle à mémoire partagée 2 racks interconnectés contenant 4 processeurs R10000 Système IRIX Marie Flé - C.R.I. - 44 - Généralités Parallélisme 18/11/2002
XIII.Compléments: notions de vectorisation Architecture vectorielle Application Programmation vectorielle Marie Flé - C.R.I. - 45 - Généralités Parallélisme 18/11/2002
A.Architecture vectorielle Architecture simplifiée d une machine vectorielle, basée sur le CRAYYMP Fonctionnement: le registre vectoriel est chargé avec un nombre de mots mémoire égal à sa taille chaque unité fonctionnelle est divisée en plusieurs étapes activée à chaque fréquence d horloge (architecture «pipeline») les éléments successifs du registre vectoriel entrent dans une unité fonctionnelle à chaque étape, i.e., une instruction commence avant que la précédante soit terminée Marie Flé - C.R.I. - 46 - Généralités Parallélisme 18/11/2002
B.Application Itérations faisant intervenir des tableaux où la même opération est répétée sur leurs éléments Exemple 43do i=1,8 44 a(i)=a(i)+10 45enddo 74 Marie Flé - C.R.I. - 47 - Généralités Parallélisme 18/11/2002
C.Programmation vectorielle Définition Une boucle est vectorisable si elle fait intervenir des opérations sur un registre vectoriel Les conditions suivantes sont nécessaires pour qu une boucle soit vectorisable: 75 76Exemple la boucle est la plus intérieure contient au moins une référence à un tableau toutes les variables sont: des invariants (référencés et non redéfinis dans la boucle) des références à un tableau dont l index est redéfini dans la boucle des entiers incrémentés, décrémentés par expressions invariantes (index de boucle) scalaires temporaires (définis puis référencés dans la boucle et non utilisées à l extérieur) les itérations sont sans conflit de dépendance : deux itérations successives i1 et i2 sont en conflit si une instruction e1 contenue dans i2 a pour résultat la donnée d une instruction e2 contenue dans i1 et si e2 succède e1. (Remarque: ceci est moins contraignant que l indépendance qui conditionne le parallélisme, v.p. 12) Marie Flé - C.R.I. - 48 - Généralités Parallélisme 18/11/2002
77do i=1,n-1 78A(i)=B(i) 79C(i)=A(i+1) 80end do 81non vectorisable 46 82do i=n-1,1,-1 83A(i)=B(i) 84C(i)=A(i+1) 85end do 86vectorisable Marie Flé - C.R.I. - 49 - Généralités Parallélisme 18/11/2002
Optimisation de la vectorisation: Faire en sorte que le registre vectoriel soit chargé avec des éléments consécutifs en mémoire sachant que pour les tableaux multi-dimensionnés, l ordre des éléments des tableaux en mémoire est différent suivant les langages (inverser l ordre des boucles si besoin est) Marie Flé - C.R.I. - 50 - Généralités Parallélisme 18/11/2002
XIV.Table des matières I.INTRODUCTION...1 II.QUELQUES DÉFINITIONS...2 III. TYPES D ARCHITECTURES PARALLÈLES...3 V.PROGRAMMATION PARALLÈLE...4 A.Contraintes du parallélisme...5 C.Différents types de parallélisme...6 D.Modèles de programmation...7 E.Quelques conseils pour la programmation parallèle...9 F.Parallélisation des itérations : étude des dépendances...10 1.Parallélisation d une itération...10 2.Notion de dépendance...12 3.Examen des indices de boucles...13 4.Analyse des constantes...14 a)fausse dépendance: variables temporaires...14 b)utilisation d indexes...14 5.Réductions...16 6.Eclatement des boucles...16 G.Distribution des tableaux...18 1.Distribution par bloc...18 Marie Flé - C.R.I. - 51 - Généralités Parallélisme 18/11/2002
a)tableaux 1 dimension:...18 b)tableaux multi-dimensions:...18 (i)distribution par bloc simple...18 (ii)distribution par bloc-ligne...18 (iii)distribution par bloc-colonne...18 3. Distribution cyclique...20 a)tableaux 1 dimension:...20 b)tableaux multi-dimensions:...20 4.Distribution bloc-cyclique...20 6.Choix de la distribution...21 VI.MESURE DU PARALLÉLISME...22 A.Calcul des performances...23 B.Accélération...25 C.Efficacité...26 D.«Scalabilité»...26 VII.LIMITATIONS DU PARALLÉLISME...28 A.Degré de parallélisme...29 B.Les conséquences de la synchronisation...31 C.Le temps consommé par les communications...32 D.Charge des processeurs...33 VIII.LANGAGES...33 A.Choix du langage...35 B.Classification suivant l architecture des machines...36 C.Classification des langages distribués...38 Marie Flé - C.R.I. - 52 - Généralités Parallélisme 18/11/2002
X.COMPILATEURS ET BIBLIOTHÈQUES EXISTANTS...40 XI. OUTILS...41 XII.ANNEXE : DESCRIPTION DES MACHINES UTILISÉES POUR LES EXERCICES...43 A.SP2 d IBM...43 B.Origin 2000 de Silicon Graphics...44 XIII.COMPLÉMENTS: NOTIONS DE VECTORISATION...45 A.Architecture vectorielle...46 B.Application...47 C.Programmation vectorielle...48 XIV.TABLE DES MATIÈRES...51 87 Marie Flé - C.R.I. - 53 - Généralités Parallélisme 18/11/2002