La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES

Présentations similaires


Présentation au sujet: "PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES"— Transcription de la présentation:

1 PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES
ALPHA BOUBACAR DIALLO Étudiant au Doctorat en Informatique

2 PLAN Définitions et concepts de base Architectures parallèles
Environnements parallèles Automatisation du processus de parallèlisation Futures avenues

3 DÉFINITIONS / CONCEPTS DE BASE
CPU (Central Processing Unit) Unité centrale de traitement GPU (Graphics Processing Unit) Processeur graphique

4 DÉFINITIONS / CONCEPTS DE BASE
CPU GPU Caractéristiques Puissant multi-core Puissant parallélisateur Processeur de contrôle Puissant processeur de calcul Utilisation Système d’exploitation Modélisation des risques financiers Base de données Imageries médicales Algorithmes récursifs Calculs d’éléments finis

5 1 Milliard d’opérations à virgule flottante par seconde

6 CPU (host) GPU

7 DÉFINITIONS / CONCEPTS DE BASE
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

8 PARALLÉLISME 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

9 FORMES DU PARALLÉLISME
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.

10 ENVIRONNEMENTS PARALLÉLES
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.

11 ENVIRONNEMENTS PARALLÉLES
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.

12 PROCESSUS D’AUTOMATISATION
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.

13 PROCESSUS D’AUTOMATISATION
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;

14 PROCESSUS D’AUTOMATISATION
#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 fonction bool blnNucleo = true; int main(int argc, char**argv) if(argc != 4){ printf("Nombre d'argument incorrect"); exit(5); } … boucles à paralléliser…

15 int main(int argc, char**argv)
Position 0 Position 25 for(i=0;i<max;i++) int CalDist (FILE *pfi,char *outF, char **pmatNEsp, …) int UpDist (FILE *pfi, double **pDis, char **pS, int pNEs, int nbSites, …) for(i=0;i<max;i++) for(i=0;i<max;i++){ … } int main(int argc, char**argv)

16 Position 0 Position 5 Position 12 matDistances[i] = taux* i*j; matDistances[i] = taux* i*j; for (j=0; j<=intNbreEspece; j++) 1 5

17

18 PROCESSUS D’AUTOMATISATION
####################### # MAIN DU PROGRAMME # nomFichierSeq = validerNomFichier formaterFichier nomFichierSeq annoterFichier NomProgPar programme = creerEnvMPI NomProgPar detecterBoucles programme traiterBoucles programme ecrireProgramme programme indenterFichier NomProgPar

19 nomFichierValide Fichier structurellelement valide ( 1 inst / ligne, { / ligne ,} / ligne ) Ajout des étiquettes (DEBUTPROGRAMME, DEBUTBOUCLE, INCLUSION) Replissage du programme (main, fonctions et tableau lignes) Remplissage du tableau de boucles du programme Remplissage du tableau d’instruction du programme Écriture du programme parallèle

20 #include <mpi.h>
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_Finalize();

21 PROCESSUS D’AUTOMATISATION
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).

22 CUDA

23 CUDA // includes, project #include <cutil.h>
// Matrix multiplication on the device void 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

24 CUDA // 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); }

25 FUTURES AVENUES 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

26 QUESTIONS


Télécharger ppt "PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES"

Présentations similaires


Annonces Google