Programmation parallèle

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

Communications point à point Communications collectives Optimisations
Rappels C.
1 HPC et Windows 2003 CCS pour les développeurs Visual Studio 2005.
MySQL I / Présentation. II / Administration et Outils.
Conception et programmation Programmation Parallèle
Introduction à MPI 13 – 16 Décembre 2005 Laurence Viry.
Introduction à MPI Types dérivés MPI Décembre 2005
Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
Cours Visual Basic pour Application
CYCLE 6 : FONCTIONS FONCTIONS avec paramètres en Entrée 1- Pourquoi les FONCTIONS peuvent échanger des données en E entre elles ? 2- Comment écrire des.
Parallel Programming in C with MPI and OpenMP
MPI et programmation par passage de messages
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
Common Gateway Interface
CYCLE 1 : Saisir – Afficher – Données Afficher du texte sur lécran 1- Rôle du printf() 2- Syntaxe du printf() 3- Exécution du printf() par le CPU.
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Langage C Révision.
MPI (Message Passing Interface)
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
Présentation rapide de MPI : Message Passing Interface
Programme de baccalauréat en informatique Algorithmique et programmation IFT-1001 Thierry EUDE Hatem Mahbouli Laboratoire #12 Département dinformatique.
PROGRAMMATION SCIENTIFIQUE EN C PRO Généralités u Présentation du plan de cours –Disponibilité –Références u Environnement de travail –Langage C.
TRAITEMENT DE STRUCTURES
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
Pr. Alain Greiner (LIP6 - ASIM) Daniel Millot, Philippe Lalevee (INT)
Franck Cappello CNRS, LRI, Université Paris-sud
Programmation concurrente
Miguel Garzon CrUise Lab - SITE. Introduction Data Types and Sizes Constants Logic Operators Type conversions Example.
Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.
Parallel Programming in C with MPI and OpenMP
Parallel Programming in C with MPI and OpenMP
1. 2 Toolkits Il existe 4 principales boites à outils (toolkits) graphiques : –Xt / Motif –Gtk –Windows –Qt Seul certaines fonctionnent sur toutes les.
Les Objets CORBA parallèles Travaux pratiques Lundi 22 mai 2000 ARC « Couplage » Christophe René (IRISA/IFSIC) Eric Lemoine (INSA Lyon)
Algorithmique et langage C. Les traitements Comment utiliser les données.
Procédures et fonctions
Une introduction à Java
Structures de données IFT-10541
Formation C++. Hello World ! #include /* Commentaire sur plusieurs lignes */ int main() { //Affiche hello world std::cout
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.
Programmer en langage c
SPIP SPIP est le système de publication développé par le minirézo.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
La notion de type revisitée en POO
Présentation rapide d’
8INF856 Programmation sur architectures parallèles
8PRO107 Éléments de programmation Les chaînes de caractères.
Argc et argv Utilisation des paramètres de la ligne de commande.
Le point sur la parallélisation du couplé Adapter les codes aux architectures multiprocesseurs des futures machines afin d’améliorer les temps de restitution.
Autres éléments du langage
Exploitation efficace des grappes de PC Raymond Namyst Projet INRIA ReMaP LIP, ENS Lyon JTE Cluster Computing Octobre 2001, Besançon.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Buffer Overflow When Data Become Instructions Vendredi, 1er mars 2002 : Sart-Tilman.
La programmation système
PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES
Programmation Système et Réseau
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
8PRO100 Éléments de programmation Les pointeurs de caractères.
L’ histoire: 1976: - Bell Labs abandonne le projet MULTICS. - Ken Thompson, programmeur système chez Bell Labs, se trouve désoeuvré. MULTICS devait être.
1 Les caractères En informatique, les caractères sont très importants puisqu’ils sont utilisés pour la communication personne-machine. Puisque les ordinateurs.
Pthread Ordonnancement. #define _MULTI_THREADED #include #ifndef _CHECK_H #define _CHECK_H /* headers used by a majority of the example program */ #include.
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
Introduction aux architectures parallèles
Parallel Programming in C with MPI and OpenMP
L’arrivée des versions parallèles des modèles de l’IPSL Adapter les codes aux architectures multiprocesseurs des futures machines afin d’améliorer les.
Algorithmes parallèles
Ecole Informatique 2010 La Programmation des Architectures Multi-cœurs Cécile Barbier Fatih Bellachia Alain Masserot.
Langage C Structure d'un programme Types Lire Ecrire Tester
Arguments de la ligne de commande
Transcription de la présentation:

Programmation parallèle CPU/GPU NOVASYS Ingénierie Clément HERMITE

Plan Introduction CPU MPI OpenMP Architectures Hybrides GPU Mesure et analyse de performance Conclusion

Introduction

CPU

MPI – Message Passing Interface 1/2 Bibliothèque de fonctions ( C, C++, Fortran …) Permet d'exploiter des ordinateurs distants ou multiprocesseur par passage de messages. Portable. Routines de la librairie : « MPI_ »

MPI – Message Passing Interface 2/2 #include<mpi.h> #define TAG 99 main(int argc, char **argv) { char msg[20]; int my_rank; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); if (my_rank == 0) { /*-- process 0 --*/ strcpy(msg, "Hello world!\n"); MPI_Send(msg, strlen(msg)+1, MPI_CHAR, 1, TAG, MPI_COMM_WORLD); } else { MPI_Recv(msg, 20, MPI_CHAR, 0, TAG, MPI_COMM_WORLD, &status); printf("Je recois : %s\n", msg); } MPI_Finalize();

(Open Multi-Processing) OpenMP 1/2 (Open Multi-Processing) Nécessite une machine multiprocesseurs à mémoire partagée. Déclaration des zones parallèles avec des #pragma. Utilise le modèle d’exécution parallèle « fork_join » . Mise en œuvre relativement facile.

OpenMP 2/2 #include <omp.h> main(){ int i, t[100]; Avec 4 threads: le premier calcule les t[i] de 0 à 24, le second de 25 à 49, le troisième de 50 à 74 et Le quatrième de 75 à 99. #include <omp.h> main(){ int i, t[100]; #pragma omp parallel for for (i=0; i<100 ; i++){ t[i]=i; } Variable d’environnement : export OMP_NUM_THREADS=4 Au cours de l’exécution: omp_set_num_threads(4) #pragma omp parallel num_threads(4)

OpenMP vs MPI MPI : la gestion des communications est à la charge de l'utilisateur. OpenMP : la gestion des communications est à la charge du compilateur. MPI et OpenMP sont complémentaires.

Architectures Hybrides

Cell Processeur multi-cœurs hétérogène. 1 cœur principal (PPE) 8 cœurs spécifiques (SPE)

Cell Abandonné en 2009 Processeur multi-cœurs hétérogène. 1 cœur principal (PPE) 8 cœurs spécifiques (SPE) Abandonné en 2009

Larrabee Processeur graphique Composé de dizaines de cœurs. Dérivés de processeurs Pentium 64-bits Multithreading Utilise le jeu d'instruction x86.

Larrabee Abandonné en décembre 2009 Processeur graphique Composé de dizaines de cœurs. Dérivés de processeurs Pentium 64-bits Multithreading Utilise le jeu d'instruction x86. Abandonné en décembre 2009

Unité graphique de calcul GPU Unité graphique de calcul

General-Purpose Processing on Graphics Processing Units GPGPU 3/3 General-Purpose Processing on Graphics Processing Units Calcul générique sur processeur graphique.

CPU vs. GPU 1/3

CPU vs. GPU 2/3 GPU : multiplication des unités de traitement CPU : complexification des unités de contrôle augmentation régulière de la mémoire cache embarquée

CPU vs. GPU 3/3

Nvidia

Cuda Compute Unified Device Architecture. Pilote (ForceWare) Runtime Bibliothèques: CuBLAS et CuFFt. C, le C++ et le Fortran

Architecture Fermi Prise en charge du langage de programmation C++ (CUDA C++) Espace d'adresses unifié pour le support complet de C++ Apparition de caches Cache configurable (L1-Mémoire partagée) Compatible IEEE 754-2008 (précision 32 et 64 bits) Exécution simultanée des kernels Support intégral ECC (codes de correction d'erreurs) Changement de contexte rapide Instructions atomiques 10 fois plus rapides

Autres technologies

Ati Stream Brook Brook+ Close to Metal Ati Stream Développée par AMD Concurrent de CUDA

OpenCL Standard ouvert Langage commun à toutes les architectures CPU, GPU, Cell etc … Apple, AMD, Intel, Nvidia et Sony

Mesure et analyse de permformance

Outils de mesure Mesure externe Mesure interne time total > user + system Mesure interne time() nombre de sec depuis 01/01/1970 clock() compte les clics d’horloge gettimeofday() appel system le plus précis

Expression des performances Accélération (Speed up)

Expression des performances Efficacité L'utilisateur s'intéresse surtout à l'accélération obtenue (Speed up). L'acheteur de la machine s'intéresse beaucoup à l'efficacité. Le développeur s'intéresse aux deux.

Expression des performances Loi d'Amdahl Speed up max

Expression des performances

Conclusion