alpha boubacar diallo

26
www.lchclearnet.com ©LCH.Clearnet Group Limited 1 ALPHA BOUBACAR DIALLO Étudiant au Doctorat en Informatique [email protected] PARALLÉLISATION AUTOMATIQUE PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES D’ALGORITHMES

Upload: berit

Post on 13-Jan-2016

54 views

Category:

Documents


3 download

DESCRIPTION

PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES. ALPHA BOUBACAR DIALLO. Étudiant au Doctorat en Informatique [email protected]. PLAN. Définitions et concepts de base Architectures parallèles Environnements parallèles Automatisation du processus de parallèlisation Futures avenues. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ALPHA BOUBACAR DIALLO

www.lchclearnet.com

©LCH.Clearnet Group Limited 1

ALPHA BOUBACAR DIALLO

Étudiant au Doctorat en Informatique

[email protected]

PARALLÉLISATION PARALLÉLISATION AUTOMATIQUE D’ALGORITHMESAUTOMATIQUE D’ALGORITHMES

PARALLÉLISATION PARALLÉLISATION AUTOMATIQUE D’ALGORITHMESAUTOMATIQUE D’ALGORITHMES

Page 2: ALPHA BOUBACAR DIALLO

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

Page 3: ALPHA BOUBACAR DIALLO

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

Page 4: ALPHA BOUBACAR DIALLO

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

Page 5: ALPHA BOUBACAR DIALLO

1 Milliard

d’opérations à

virgule flottante

par seconde

Page 6: ALPHA BOUBACAR DIALLO

CPU(host)

GPU

Page 7: ALPHA BOUBACAR DIALLO

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

Page 8: ALPHA BOUBACAR DIALLO

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

Page 9: ALPHA BOUBACAR DIALLO

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

Page 10: ALPHA BOUBACAR DIALLO

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

Page 11: ALPHA BOUBACAR DIALLO

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

Page 12: ALPHA BOUBACAR DIALLO

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

Page 13: ALPHA BOUBACAR DIALLO

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

Page 14: ALPHA BOUBACAR DIALLO

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

Page 15: ALPHA BOUBACAR DIALLO

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++)

Page 16: ALPHA BOUBACAR DIALLO

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

Page 17: ALPHA BOUBACAR DIALLO

Variable

Taille : 200

Transfert : oui

nom : matDistances

ligne : matDistances[i] = taux * i * j;

niveau imbrication : 3

Page 18: ALPHA BOUBACAR DIALLO

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

Page 19: ALPHA BOUBACAR DIALLO

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)

Page 20: ALPHA BOUBACAR DIALLO

#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();

Page 21: ALPHA BOUBACAR DIALLO

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

Page 22: ALPHA BOUBACAR DIALLO

www.lchclearnet.com

©LCH.Clearnet Group Limited 22

CUDACUDA

Page 23: ALPHA BOUBACAR DIALLO

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

Page 24: ALPHA BOUBACAR DIALLO

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

Page 25: ALPHA BOUBACAR DIALLO

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

Page 26: ALPHA BOUBACAR DIALLO

www.lchclearnet.com

©LCH.Clearnet Group Limited 26

QUESTIONSQUESTIONS