MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe



Documents pareils
Plan de la formation. Calcul parallèle avec MPI. Pourquoi paralléliser? Parallélisation. Présentation, environnement MPI. Communications point à point

Introduction à la Programmation Parallèle: MPI

Les communications collectives. Caractéristiques. Communications dans un groupe de processus. Dans un communicateur donné.

Introduction to Parallel Programming with MPI

Limitations of the Playstation 3 for High Performance Cluster Computing

Programmation parallèle et distribuée

Grid Computing. Mihaela JUGANARU-MATHIEU École Nationale Supérieure des Mines de St Etienne

Systèmes parallèles et distribués

Etude d Algorithmes Parallèles de Data Mining

Eléments d architecture des machines parallèles et distribuées

Initiation au HPC - Généralités

Parallélisme et Répartition

Application Note. WeOS Création de réseaux et de réseaux virtuels VLAN

Programmation parallèle pour le calcul scientifique

3A-IIC - Parallélisme & Grid GRID : Définitions. GRID : Définitions. Stéphane Vialle. Stephane.Vialle@supelec.fr

Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI.

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

THÈSE. pour obtenir le grade de. Spécialité : "Informatique : Systèmes et Communications"

Aspects théoriques et algorithmiques du calcul réparti L agglomération

1. Warm up Activity: Single Node

Les diagrammes de modélisation

D2.2 Définition des mécanismes minimaux d un runtime tolérant aux pannes dans les infrastructures Petascale

NOTIONS DE RESEAUX INFORMATIQUES

Gestion de clusters de calcul avec Rocks

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Principes de DHCP. Le mécanisme de délivrance d'une adresse IP à un client DHCP s'effectue en 4 étapes : COMMUTATEUR 1. DHCP DISCOVER 2.

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14

Introduction. René J. Chevance

Conception des systèmes répartis

Architecture des calculateurs

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Cours 13. RAID et SAN. 2004, Marc-André Léger

1. Introduction à la distribution des traitements et des données

Quoi de neuf en contrôle/commande et systèmes embarqués (RIO, WSN...)?

Travaux pratiques : configuration de la traduction d adresses de port (PAT)

4 Exemples de problèmes MapReduce incrémentaux

INSTALLATION DEBIAN 7 (NETINSTALL) SUR VM

Cours n 12. Technologies WAN 2nd partie

PVM 1 PVM. Parallel Virtual Machine

Sauvegarde des données au LAAS

CORBA haute performance

Grid5000 aujourd'hui : Architecture & utilisation

Travaux pratiques : configuration et vérification des listes de contrôle d'accès IPv6 Topologie

Cahier des charges pour la mise en place de l infrastructure informatique

Modélisation des interfaces matériel/logiciel

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Infrastructures Parallèles de Calcul

Une bibliothèque de templates pour CUDA

NOTICE INSTALLATION. ARCHANGE Simplex Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

Réseau longue distance et application distribuée dans les grilles de calcul : étude et propositions pour une interaction efficace

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

NOTICE INSTALLATION. ARCHANGE WebDAV Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

Projet IGGI. Infrastructure pour Grappe, Grille et Intranet. Fabrice Dupros. CASCIMODOT - Novembre Systèmes et Technologies de l Information

Evolution de l infrastructure transport

Internet Protocol. «La couche IP du réseau Internet»

Hypervision et pilotage temps réel des réseaux IP/MPLS

Architecture des ordinateurs

Asynchronisme : Cadres continu et discret

//////////////////////////////////////////////////////////////////// Administration systèmes et réseaux

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Organiser vos données - Big Data. Patrick Millart Senior Sales Consultant

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

MISE EN PLACE DU FIREWALL SHOREWALL

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Happy birthday ZSet High performance computing dans ZSet

Mise en service d un routeur cisco

TP développement : portage d applications sur le Cloud IaaS

Threads. Threads. USTL routier 1

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

Fiche technique CPU 315SN/PN (315-4PN33)

Tutorial NL220. Objectifs : Fournir un guide utilisateur pour NL220. Présenter une méthodologie efficace pour la création de projet

Evaluation des performances de programmes parallèles haut niveau à base de squelettes

La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet

NON URGENTE TEMPORAIRE DEFINITIVE. SUBJECT : PROCÉDURE DE MISE EN SERVICE DE LA VERSION F e RELEASE 6.2

Rapport d activité. Mathieu Souchaud Juin 2007

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Bases de données cours 1

Télécommunications. IPv4. IPv4 classes. IPv4 réseau locaux. IV - IPv4&6, ARP, DHCP, DNS

Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN

RESEAUX MISE EN ŒUVRE

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Connexion à distance. Pour configurer les automates Beckhoff via un PC de programmation VERSION : 1.0 / PH

Problèmes liés à la concurrence

Optimisations des SGBDR. Étude de cas : MySQL

Travaux pratiques : collecte et analyse de données NetFlow

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Ici se présente un petit récapitulatif de ce qu il se passe sur le réseau : les connexions bloquées, le matériel du boitier, les mises à jour, etc.

Transcription:

3A-SI Programmation parallèle MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe 6 Communications point à point non bloquantes 7 Communications de groupe 8 Produit de matrices denses sur anneau avec recouvrement 9 Bilan de programmation MPI A Comparaisons performances/coûts de 4 clusters B Produit de matrices denses sur tore 1

MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe 6 Communications point à point non bloquantes Principes Ibsend-IrecvIrecv Issend-Irecv Irsend-Irecv Identificateurs persistents Communications point à point non bloquantes Principes des comm. Non bloquantes Principes des communications non-bloquantes MPI_Ixxxx(, MPI_Request *request) Ibsend/Irecv - Issend/Irecv - Irsend/Irecv Isend ET Irecv non bloquants Un paramètre de plus que leurs homologues bloquants : Id sur la communication demandée (MPI_Request) Besoin de savoir si les communications sont terminées : MPI_(request, ) ou MPI_Test(request, ) Comparaison aux communications bloquantes : Nécessite une synchronisation explicite Plus complexe Permet de réaliser du recouvrement calcul-communication 2

Communications point à point non bloquantes Ibsend Irecv Mode bufferisé et non-bloquant : MPI_Ibsend MPI_Irecv Rappel : Bsend- send recv Non-bloquant : Ibsend-Irecv send recv Bsend Bsend signalé copie transfert Ibsend Ibsend signalé Irecv Irecv Communications point à point non bloquantes Issend Irecv Mode synchrone et non-bloquant : MPI_Issend MPI_Irecv Rappel : Ssend- Non-bloquant : Issend-Irecv send recv send recv Ssend Ssend signalé Issend Issend signalé attente Irecv ack. ack. Ssend transfert Issend Irecv 3

Communications point à point non bloquantes Irsend Irecv Mode ready et non-bloquant : MPI_Irsend MPI_Irecv Rappel : Rsend- Non-bloquant : Irsend-Irecv send recv send recv signalé Irecv signalé Irecv Rsend Rsend transfert Irsend Irsend Irecv Communications point à point non bloquantes Identificateurs persistents Autre mode d utilisation des comm. non bloquantes : Loop: MPI_Issend(,&s_request); Issend( MPI_Irecv(,&r_request); Irecv( request); // calculs MPI_(&s_request, ); MPI_(&r_request, ); MPI_Ssend_init(,&s_request); MPI init(,&r_request); Loop: MPI_ Start(&s _ request); MPI_ Start(&r _ request); // calculs MPI_(&s_request, ); MPI_(&r_request, ); MPI_Request_free(&s_request); MPI_Request_free(&r_request); Evite de réinitialiser des communications non-bloquantes 4

MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe 7 Communications de groupe Principes des communications de groupe Broadcast Scatter Gather Reduce Communications de groupe Principes des comm. de groupe 5 types principaux : Broadcast Scatter Gather Reduce(op) + les barrières! Utilisent les communicator et les groupes de processus Opérations bloquantes Des variantes existent : all-reduce, all-to-all, scatterv, Routage optimisé selon le réseau sous-jacent arborescent linéaire sur bus parfois plus lent que des Send/!! = op(op( ),op( ), op( ),op( )) 5

Communications de groupe Broadcast int MPI_Bcast(buffer,count,datatype,root,comm ) void *buffer; /* Starting address of buffer */ int count; /* Number of entries in buffer (integer) */ MPI_Datatype datatype; /* Data type of buffer */ int root; /* Rank of broadcast root (integer) */ MPI_Comm comm; /* Communicator */ root comm datatype count (différemment!) datatype Chaque processus utilise sa propre datatype Chaque processus exécute MPI_Bcast adresse de buffer Généralisation : MPI_Alltoall et MPI_Alltoallv Communications de groupe Scatter int MPI_Scatter(sendbuf,sendcnt,sendtype, recvbuf,recvcnt,recvtype, root,comm) void *sendbuf; /* Address of send buffer */ int sendcnt; /* Number of elements sent to each process */ MPI_Datatype sendtype; /* Data type of send buffer elements */ void *recvbuf; /* Address of receive buffer */ int recvcnt; /* Number of elements in receive buffer */ MPI_Datatype recvtype; /* Data type of receive buffer elements*/ int root; /* Rank of sending process */ MPI_Comm comm; /* Communicator */ root comm sendtype sendcnt Chaque processus exécute MPI_Scatter (différemment) Chaque processus utilise sa propre adresse de recvbuf Variante : MPI_Scatterv (avec décalage explicite des données) 6

Communications de groupe Gather int MPI_Gather(sendbuf,sendcnt,sendtype, recvbuf,recvcount,recvtype, root,comm) void *sendbuf; /* Starting address of send buffer */ int sendcnt; /* Number of elements in send buffer */ MPI_Datatype t sendtype; /* Data type of send buffer elements */ void *recvbuf; /* Address of receive buffer */ int recvcount; /* Number of elements for any single receive */ MPI_Datatype recvtype; /* Data type of recv buffer elements */ int root; /* Rank of receiving process */ MPI_Comm comm; /* Communicator */ root comm sendtype Chaque processus exécute sendtype MPI_Gather (différemment) sendcnt Chaque processus utilise sa sendtype propre adresse de sendbuf Généralisation : MPI_Gatherv, MPI_Allgather, MPI_Allgatherv Communications de groupe Reduce int MPI_Reduce(sendbuf,recvbuf,count,datatype,op,root,comm) void *sendbuf; /* Address of send buffer */ void *recvbuf; /* Address of receive buffer */ int count; /* Number of elements in send buffer */ MPI_Datatype datatype; /* Data type of elements of send buffer */ MPI_Op op; /* Reduce operation */ int root; /* Rank of root process */ MPI_Comm comm; /* Communicator */ root comm Reduce operations : MPI_MAX, MPI_MIN, MPI_SUM, MPI_PROD MPI_ LAND,, MPI_ BAND,, MPI_ LOR,, MPI_ BOR MPI_LXOR, MPI_BXOR, MPI_MINLOC + définition de nouvelles opérations par MPI_Op_create() = op(op( ),op( ), op( ),op( )) Généralisation : MPI_Allreduce, MPI_Reduce_scatter les résultats sont redistribués 7

MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe 8 Produit de matrices denses sur anneau avec recouvrement Algorithme distribué Modélisation des performances Exemples de performances Produit de matrices denses sur anneau Rappel d algorithmique distribuée Partitionnement sur un anneau de processeurs : A partitionnée en blocs de lignes B et C partitionnées en blocs de colonnes circulation de A B et C statiques 0 1 P-1 Topologie Partitionnement et circulation de A Partitionnement statique de B Partitionnement statique de C 8

Produit de matrices denses sur anneau Rappel d algorithmique distribuée Exemple de déroulement de l algorithme sur PE-2, avec P = 4 : B B B B A A A A Étape 1 C Étape 2 C Étape 3 C Étape 4 C Calcul de toutes les colonnes et routage de toutes les lignes de A en parallèle, en P=4étapes étapes. Résultats après P étapes (seulement) : 0 1 P-1 Topologie Partitionnement statique de C Produit de matrices denses sur anneau avec recouvrement Algorithme distribué Stratégies d implantation sur un anneau de P processeurs : Sans recouvrement : for (i=0; i<p; i++) calcul(); barriere(); circulation(); barriere(); } Avec recouvrement : for (i=0; i<p; i++) par { calcul(); circulation(); } barriere(); buffer_permut(); } 1 er algorithme : avec barrières conceptuelles Les barrières de synchronisations sont parfois implicites Les barrières apparaissent parfois inutiles Voir à l implant. 9

Produit de matrices denses sur anneau Implant. en MPI-1 à comm. non-bloquantes Using Issend and Irecv : void ComputationAndCirculation() { MPI_Request RqSend[2], Rq[2]; MPI_Status StSend, St; // Start computation and circulation loop for (int step = 0; step < NbPE; step++) { // - run asynchronous communications MPI_Issend(& A[step%2][0][0],SIZE*LOCAL_SIZE,MPI_DOUBLE, (Me-1+NbPE)%NbPE,0,MPI_COMM_WORLD,&RqSend[step%2]); MPI_Irecv(&A[(step+1)%2][0][0],SIZE*LOCAL_SIZE,MPI_DOUBLE, } } (Me+1)%NbPE,0,MPI_COMM_WORLD,&Rq[(step+1)%2]); MPI // - run local computations SeqLocalProduct(step); // - wait the end of the asynchronous communications MPI_(&RqSend[step%2],&StSend); MPI_(&Rq[(step+1)%2],&St); Produit de matrices denses sur anneau Implant. en MPI-1 à comm. non-bloquantes Avec des communications asynchrones et persistantes: void ComputationAndCirculation() { MPI_Request RqSend[2], Rq[2]; MPI_Status StSend, St; // Init of persistent comm MPI_Ssend_init(& A[0][0][0],SIZE*LOCAL_SIZE,MPI_DOUBLE, (Me-1+NbPE)%NbPE,0,MPI_COMM_WORLD,&RqSend[0]); MPI init(&a[0][0][0],size*local_size,mpi_double, (Me+1)%NbPE,0,MPI_COMM_WORLD,&Rq[0]); MPI_Ssend_init(&A[1][0][0],SIZE*LOCAL_SIZE,MPI_DOUBLE, (Me-1+NbPE)%NbPE,0,MPI_COMM_WORLD,&RqSend[1]); MPI init(&a[1][0][0],size*local_size,mpi_double, (Me+1)%NbPE,0,MPI_COMM_WORLD,&Rq[1]); // Start computation and circulation loop for (int step = 0; step < NbPE; step++) { MPI_Start(&RqSend[step%2]); MPI_Start(&Rq[(step+1)%2]); SeqLocalProduct(step); MPI_(&RqSend[step%2],&StSend); MPI_(&Rq[(step+1)%2],&St); } // Free the persistent communication objects MPI_Request_free(&RqSend[0]); MPI_Request_free(&RqSend[1]); MPI_Request_free(&Rq[0]); MPI_Request_free(&Rq[1]); } 10

Produit de matrices denses sur anneau avec recouvrement Exemple de performances Texec c(s) 150 120 90 60 Texec(P) Ibsend Issend 12 x P4-3GHz - 2Go Ram Ethernet Gigabit 3 switchs 30 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Nombre de PC 10000 9000 8000 7000 6000 5000 4000 3000 2000 1000 0 La perte de performances persiste : Elle n est pas due au comm. Amdahl? Calculs locaux trop petits? Mflops Ibsend Issend Idéal Mflops(P) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Nombre de PC Spee ed Up 15 13 11 9 7 5 3 1 Produit de matrices denses sur anneau avec recouvrement Exemple de performances Ibsend Issend Idéal Speed Up(P) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Nombre de PC 100 Les communications sont négligeables dans cette implantation! Donc le recouvrement apporte peu sur un bon réseau. e(%) 80 60 40 20 0 12 x P4-3GHz - 2Go Ram Ethernet Gigabit 3 switchs Efficacité(P) Ibsend Issend 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Nombre de PC 11

Produit de matrices denses sur anneau avec recouvrement Exemple de performances Avec un réseau moins bon le recouvrement a un impact! 12 x P3-700MHz Fast Ethernet 3 switchs Flop s M 1300 1200 1100 1000 900 800 700 600 500 400 300 200 100 0 Ring-Sendrecv-replace Ring-Irsend Ring-Irsend+overlapp 1 2 3 4 5 6 7 8 9 10 11 12 13 Number of nodes Messages non-bloquant plus rapides. Messages non-bloquant & recouvrement encore plus rapide. Recouvrement efficace! MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe 9 Bilan de programmation MPI 12

MPI : Programmation et algorithmique distribuée Bilan de programmation MPI Avantages : Création de P processus dès le lancement Porté sur la plus large gamme d architecture possible Une grande variété d envois de messages possibles Aujourd hui : thread-safe, - ex : mixable avec OpenMP sur cluster de PC bi-pro. Inconvénients : Des différences de performances selon -le type d envois de messages - l application (volume et fréquence des comms) - l architecture employée Des synchronisations parfois complexes Demande une modification importante du code séquentiel - conception parallèle à part entière A Comparaisons performances/coûts de 4 clusters Comparaison de speedup de Jacobi Comparaison de speedup de Jacobi Mflops/Euros 13

Comparaison de clusters Comparaisons de speedup de Jacobi Comparaison des meilleurs Speed Up des 4 réseaux sur 2 nœuds : Speed Up (2) 9 8 7 6 5 4 3 2 1 0 SU(2)-Myrinet-Sendrecv Sendrecv SU(2)-Gigabit-Sendrecv SU(2)-EthGamma-Sendrecv SU(2)-FastEth-Sendrecv 0 250 500 750 1000 1250 1500 Problem size (KBytes) Comparaison de clusters Coût Mflops/Euro du Jacobi Le Mflops des clusters reste toujours plus cher qu en séquentiel : 0,9 mpirun -np 1 - PIII-1GHz 0,8 PIII mpirun -np1piv-x-2.4ghz PIVX2.4GHz 0,7 Myrinet (2) 0,6 Gigabit (2) Fast-Eth+Gamma (2) 0,5 Fast-Ethernet (2) 0,4 MFlops/Euro 0,3 0,2 0,1 0 PIV-Xeon Clusters! 0 250 500 750 1000 1250 1500 Problem size (KBytes) 14

Comparaison de clusters Coût Mflops/Euro du Jacobi Myrinet revient cher, les solutions à «0 copies» sont très rentables : 0,2 0,18 Myrinet-PIII (2) 016 0,16 Gigabit-PIV-Xeon (2) 0,14 Fast-Eth+Gamma-PIII (2) 0,12 Fast-Ethernet-PIII (2) 0,1 «Eth-0 copies» 0,08 0,06 0,04 0,02 Myrinet 0 MFlops/Euro 0 250 500 750 1000 1250 1500 Problem size (KBytes) MPI-1 2ème partie : Programmation «non bloquante»et communications de groupe FIN 15