View
52
Download
3
Category
Preview:
DESCRIPTION
PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES. ALPHA BOUBACAR DIALLO. Étudiant au Doctorat en Informatique diallo.alphaboubacar@gmail.com. PLAN. Définitions et concepts de base Architectures parallèles Environnements parallèles Automatisation du processus de parallèlisation Futures avenues. - PowerPoint PPT Presentation
Citation preview
www.lchclearnet.com
©LCH.Clearnet Group Limited 1
ALPHA BOUBACAR DIALLO
Étudiant au Doctorat en Informatique
diallo.alphaboubacar@gmail.com
PARALLÉLISATION PARALLÉLISATION AUTOMATIQUE D’ALGORITHMESAUTOMATIQUE D’ALGORITHMES
PARALLÉLISATION PARALLÉLISATION AUTOMATIQUE D’ALGORITHMESAUTOMATIQUE D’ALGORITHMES
www.lchclearnet.com
©LCH.Clearnet Group Limited 2
Définitions et concepts de base
Architectures parallèles
Environnements parallèles
Automatisation du processus de parallèlisation
Futures avenues
PLANPLAN
www.lchclearnet.com
©LCH.Clearnet Group Limited 3
CPU (Central Processing Unit)
Unité centrale de traitement
GPU (Graphics Processing
Unit)
Processeur graphique
DÉFINITIONS / CONCEPTS DE BASEDÉFINITIONS / CONCEPTS DE BASE
www.lchclearnet.com
©LCH.Clearnet Group Limited 4
CPU GPU
CaractéristiquesPuissant multi-core Puissant parallélisateur
Processeur de contrôle Puissant processeur de calcul
UtilisationSystème d’exploitation Modélisation des risques
financiers
Base de données Imageries médicales
Algorithmes récursifs Calculs d’éléments finis
DÉFINITIONS / CONCEPTS DE BASEDÉFINITIONS / CONCEPTS DE BASE
1 Milliard
d’opérations à
virgule flottante
par seconde
CPU(host)
GPU
www.lchclearnet.com
©LCH.Clearnet Group Limited 7
Programme séquentiel:
définit une séquence d’actions ( instructions)
Programme parallèle:
contient plusieurs processus qui coopèrent
Système parallèle:
dispose d’au moins 2 CPU ou d’un GPU
DÉFINITIONS / CONCEPTS DE BASEDÉFINITIONS / CONCEPTS DE BASE
www.lchclearnet.com
©LCH.Clearnet Group Limited 8
Conditions du parallélisme:
« Soit P1 et P2 deux programmes; on suppose que chacun des
programmes utilisent des variables en entrée (E1 et E2) et
produit des valeurs en sortie (S1 et S2). Les programmes P1
et P2 sont exécutables en parallèle (noté P1 | | P2) si et
seulement si les conditions suivantes sont respectées :
E1 ∩ S2 = Ø,
E2 ∩ S1 = Ø et
S1 ∩ S2 = Ø. »
Philip Bernstein
PARALLÉLISMEPARALLÉLISME
www.lchclearnet.com
©LCH.Clearnet Group Limited 9
Parallélisme de données
même opération effectuée par des processeurs différents sur
des ensembles disjoints de données.
Parallélisme de contrôle
différentes opérations indépendantes sont réalisées
simultanément.
Parallélisme de flux
l’opération suivante est amorcée avant que la précédente ne soit
terminée.
FORMES DU PARALLÉLISMEFORMES DU PARALLÉLISME
www.lchclearnet.com
©LCH.Clearnet Group Limited 10
MPI (Message Passing Interface)
Librairie standard de passage de messages.
Communication de haut niveau et de bas niveau.
La portabilité.
Gestion des groupes de processus.
Gestion des processus.
Facilité de compréhension et performance élevée.
ENVIRONNEMENTS PARALLÉLESENVIRONNEMENTS PARALLÉLES
www.lchclearnet.com
©LCH.Clearnet Group Limited 11
PVM
Machine virtuelle composée d’une ou de plusieurs machines hôtes qui communiquent les unes avec les autres à travers le protocole standard TCP/IP.
CUDA (Compute Unified Device Arch.)
Nouvelle architecture (logicielle et matérielle) pour la mise en œuvre et la gestion des opérations exécutées sur le GPU.
ENVIRONNEMENTS PARALLÉLESENVIRONNEMENTS PARALLÉLES
www.lchclearnet.com
©LCH.Clearnet Group Limited 12
Objectifs du projet:
Automatisation du processus de parallélisation des programmes séquentiels.
Transformation automatique d’un programme séquentiel en programme parallèle.
Parallélisation des boucles FOR contenues dans un programme séquentiel écrit dans le language C.
PROCESSUS D’AUTOMATISATIONPROCESSUS D’AUTOMATISATION
www.lchclearnet.com
©LCH.Clearnet Group Limited 13
Traitement des fichiers de code.
Mise en œuvre d’une lourde structure de données afin de conserver toutes les parties du code (programme).
Une structure programme;
Une structure de boucle;
Une structure variable;
PROCESSUS D’AUTOMATISATIONPROCESSUS D’AUTOMATISATION
www.lchclearnet.com
©LCH.Clearnet Group Limited 14
#include <stdio.h>…
int CalDist (FILE *pfi,char *outF, char **pmatNEsp, …) { …
FILE * f = fopen(pfi,"r");…
}
int UpDist (FILE *pfi, double **pDis, char **pS, int pNEs, int nbSites, …){ …
int intRetour; // Retour de fonctionbool blnNucleo = true;…
}
int main(int argc, char**argv){ …
if(argc != 4){ printf("Nombre d'argument incorrect"); exit(5); }…… boucles à paralléliser…
}
PROCESSUS D’AUTOMATISATIONPROCESSUS D’AUTOMATISATION
Programme
Tableau des instructions
Tableau de boucles
Tableau de fonctions
Tableau de lignes
#include <stdio.h>…
int CalDist (FILE *pfi,char *outF, char **pmatNEsp, …) { …
FILE * f = fopen(pfi,"r");…
}
...
int main(int argc, char**argv){ …
if(argc != 4){ printf("Nombre d'argument incorrect"); exit(5); }…
}
Programme 1
Programme n
Boucle 1
Boucle n
main Programme
Instruction 1
Instruction n
Position 0Position 0
Position 25Position 25
int CalDist (FILE *pfi,char *outF, char **pmatNEsp, …)
int CalDist (FILE *pfi,char *outF, char **pmatNEsp, …)
int UpDist (FILE *pfi, double **pDis, char **pS, int pNEs, int nbSites, …)
int UpDist (FILE *pfi, double **pDis, char **pS, int pNEs, int nbSites, …)
int main(int argc, char**argv)int main(int argc, char**argv)
for(i=0;i<max;i++)for(i=0;i<max;i++)
for(i=0;i<max;i++){ … }for(i=0;i<max;i++){ … }
for(i=0;i<max;i++)for(i=0;i<max;i++)
Boucle
Tableau de numéros
Tableau de boucles
Tableau de variables
Tableau de lignes
for (int i =0; i < max ; i ++) {for (j = 0; j <= intNbreEspeces; j++){ // 20 correspend à la taille max du nom d'espèce
matEspeces[i] = 0;for ( … ) {
…}
}for ( … ){
...}
}
Variable 1
Variable n
Boucle 1
Boucle n
Num 1Num 2Num 3
Position 0Position 0
Position 5Position 5
Position 12
matDistances[i] = taux* i*j;
Position 12
matDistances[i] = taux* i*j;
matDistances[i] = taux* i*j;matDistances[i] = taux* i*j;
for (j=0; j<=intNbreEspece; j++)for (j=0; j<=intNbreEspece; j++)
11
55
Variable
Taille : 200
Transfert : oui
nom : matDistances
ligne : matDistances[i] = taux * i * j;
niveau imbrication : 3
www.lchclearnet.com
©LCH.Clearnet Group Limited 18
######################## MAIN DU PROGRAMME ########################
nomFichierSeq = validerNomFichier
formaterFichier nomFichierSeq
annoterFichier NomProgPar
programme = creerEnvMPI NomProgPar
detecterBoucles programme
traiterBoucles programme
ecrireProgramme programme
indenterFichier NomProgPar
PROCESSUS D’AUTOMATISATIONPROCESSUS D’AUTOMATISATION
detecterBoucles
creerEnvironnementMPI
formaterFichier
validerNomFichier
annoterProgramme
traiterBoucles
ecrireProgrammeParallele
nomFichierValidenomFichierValide
Fichier structurellelement valide ( 1 inst / ligne, { / ligne ,} / ligne )Fichier structurellelement valide ( 1 inst / ligne, { / ligne ,} / ligne )
Ajout des étiquettes (DEBUTPROGRAMME, DEBUTBOUCLE, INCLUSION)Ajout des étiquettes (DEBUTPROGRAMME, DEBUTBOUCLE, INCLUSION)
Remplissage du tableau de boucles du programmeRemplissage du tableau de boucles du programme
Remplissage du tableau d’instruction du programmeRemplissage du tableau d’instruction du programme
Écriture du programme parallèleÉcriture du programme parallèle
Replissage du programme (main, fonctions et tableau lignes)Replissage du programme (main, fonctions et tableau lignes)
#include <stdio.h>
…
int CalDist (FILE *pfi,char *outF, char **pmatNEsp, …) { …
FILE * f = fopen(pfi,"r");…
}
int UpDist (FILE *pfi, double **pDis, char **pS, int pNEs, int nbSites, …){ …
int intRetour; // Retour de fonctionbool blnNucleo = true;…
}
int main(int argc, char**argv){
…if(argc != 4){ printf("Nombre d'argument incorrect"); exit(5); }…… boucles …
}
#include <mpi.h>#include <mpi.h>
Int myId, numProcs, nameLen, erreur; MPI_Status statusMsg;Int myId, numProcs, nameLen, erreur; MPI_Status statusMsg;
MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&numProcs);MPI_Comm_rank(MPI_COMM_WORLD,&myId);
MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&numProcs);MPI_Comm_rank(MPI_COMM_WORLD,&myId);
MPI_Finalize();MPI_Finalize();
www.lchclearnet.com
©LCH.Clearnet Group Limited 21
Problèmes rencontrés :
traiterBoucles programme
Détection des dépendances.Synchronisation.
Utilisation de PLATO :
Outil d’analyse de dépendances.Contient une collection de tests de dépendances de données ( test Banerjee, I-Test, plusieurs versions de la NLVI-Test).
PROCESSUS D’AUTOMATISATIONPROCESSUS D’AUTOMATISATION
www.lchclearnet.com
©LCH.Clearnet Group Limited 22
CUDACUDA
www.lchclearnet.com
©LCH.Clearnet Group Limited 23
// includes, project#include <cutil.h>
// Matrix multiplication on the devicevoid MatrixMulOnDevice(const Matrix M, const Matrix N, Matrix P){ // Load M and N to the device Matrix Md = AllocateDeviceMatrix(M); CopyToDeviceMatrix(Md, M); Matrix Nd = AllocateDeviceMatrix(N); CopyToDeviceMatrix(Nd, N);
// Allocate P on the device Matrix Pd = AllocateDeviceMatrix(P); CopyToDeviceMatrix(Pd, P); // Clear memory
CUDACUDA
www.lchclearnet.com
©LCH.Clearnet Group Limited 24
// Setup the execution configuration dim3 dimBlock(WIDTH, WIDTH); dim3 dimGrid(1, 1);
// Launch the device computation threads! MatrixMulKernel<<<dimGrid, dimBlock>>> (Md, Nd, Pd);
// Read P from the device CopyFromDeviceMatrix(P, Pd);
// Free device matrices FreeDeviceMatrix(Md); FreeDeviceMatrix(Nd); FreeDeviceMatrix(Pd);}
CUDACUDA
www.lchclearnet.com
©LCH.Clearnet Group Limited 25
Parallisiation de parties indépendantes du programme qui ne sont pas des boucles For.
Parallélisation de programmes écrits en JAVA, C#, Ruby, etc.
Automatisation du processus de parallélisation dans de nouveaux environnements :PVM, …
Optimisation des versions parallèles
FUTURES AVENUESFUTURES AVENUES
www.lchclearnet.com
©LCH.Clearnet Group Limited 26
QUESTIONSQUESTIONS
Recommended