1 / 26

ALPHA BOUBACAR DIALLO

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.

berit
Download Presentation

ALPHA BOUBACAR DIALLO

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES ALPHA BOUBACAR DIALLO Étudiant au Doctorat en Informatique diallo.alphaboubacar@gmail.com

  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écritdans 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. 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. PROCESSUS D’AUTOMATISATION ####################### # MAIN DU PROGRAMME # ####################### nomFichierSeq = validerNomFichier formaterFichier nomFichierSeq annoterFichier NomProgPar programme = creerEnvMPI NomProgPar detecterBoucles programme traiterBoucles programme ecrireProgramme programme indenterFichier NomProgPar

  18. 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

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

  20. 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).

  21. CUDA

  22. 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

  23. 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); }

  24. 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

  25. QUESTIONS

More Related