PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES

Slides:



Advertisements
Présentations similaires
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Rappels C.
Introduction au langage C
Formation universitaire à .NET: Introduction à C#
Calculs de complexité d'algorithmes
Cours n° 8 Conception et Programmation à Objets
la programmation en langage C
C.
Le Concept du programme enregistré
Traitement de flux vidéo sur GPU (Processeur graphique)
INTRODUCTION.
FLSI602 Génie Informatique et Réseaux
Architecture de machines Principes généraux
Cours Visual Basic pour Application
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Common Gateway Interface
Récursivité.
Algorithmes et résolution de problèmes FGE
Création d’un programme :
Algorithmique et Programmation
Introduction à la programmation (Java)
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Parallel Programming in C with MPI and OpenMP
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures alternative et répétitive
La librairie assert.h.
Importance du réseau dans des architectures MIMD Tout échange entre les processeurs nécessite un transfert de données via le réseau.
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Systèmes d’exploitation
Programmer en langage c
Introduction aux systèmes d’exploitation
Programmation Système et Réseau (sous Linux)
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Présentation rapide d’
8INF856 Programmation sur architectures parallèles
Jeu de Librairies Virtuelles « DLL » Windows pour la réalisation de programmes informatiques.
Argc et argv Utilisation des paramètres de la ligne de commande.
Autres éléments du langage
Algorithmes et Programmation
Un survol du language C.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Programmation parallèle
La programmation système
Programmation Système et Réseau
Introduction au langage C Fonctions et Procédures
Les sockets.
Introduction et Généralités sur l’Algorithmique
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Architecture Client/Serveur
1.1: notions de bases de l’informatique
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Un ordinateur est une machine électronique qui fonctionne par la lecture séquentielle d'un ensemble d'instructions, organisées en programmes, qui lui.
Algorithmes parallèles
Introduction au langage C
Ecole Informatique 2010 La Programmation des Architectures Multi-cœurs Cécile Barbier Fatih Bellachia Alain Masserot.
GPU sous LabVIEW eTIG_OOP_ Plan de la présentation 1.Frameworks OOP référencés 2.Performances d’accés 3.Performances de compilation 4.Erreurs.
Transcription de la présentation:

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

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

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

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

CPU (host) GPU

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

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

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.

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.

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.

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.

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;

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…

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)

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

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

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

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

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

CUDA

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

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

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

QUESTIONS