BE de programmation MPI-1 par envois de messages bloquants



Documents pareils
Grid5000 aujourd'hui : Architecture & utilisation

Limitations of the Playstation 3 for High Performance Cluster Computing

Introduction à la Programmation Parallèle: MPI

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Gestion de clusters de calcul avec Rocks

Livre blanc Mesure des performances sous Windows Embedded Standard 7

Travaux Pratiques sur GRID 5000

Les environnements de calcul distribué

Qu'est-ce que c'est Windows NT?

Initiation au HPC - Généralités

<Insert Picture Here> Solaris pour la base de donnés Oracle

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Rapport d activité. Mathieu Souchaud Juin 2007

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

Rapport 2014 et demande pour Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121

Onglet sécurité de Windows XP Pro et XP Home

LA SAUVEGARDE DES DONNEES SUR LES ORDINATEURS PERSONNELS

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

Quantification d incertitude et Tendances en HPC

Introduction to Parallel Programming with MPI

Mesurer les performances (CPU) sous Linux

Virtualisation de Windows dans Ubuntu Linux

Logiciel SCRATCH FICHE 02

Siemens Grâce aux documents intelligents, un leader mondial de la haute technologie augmente l efficacité et la précision de ses employés.

Chapitre 2. Cluster de calcul (Torque / Maui) Grid and Cloud Computing

Eric Bertrand 08/11/06 Maître de conférence 1

Le Framework.Net. Introduction. Pourquoi.Net?

FICHE DE COURS RESEAU POSTE A POSTE BAC PRO SYSTEMES ELECTRONIQUES NUMERIQUES Champ Professionnel : Télécommunications et Réseaux

Présentation du déploiement des serveurs

Serveur d application WebDev

Etude d Algorithmes Parallèles de Data Mining

Table des matières Hakim Benameurlaine 1

1. Comment accéder à mon panneau de configuration VPS?

Systèmes parallèles et distribués

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Cahier Technique Envoi par à partir des logiciels V7.00

Documentation Cobian

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

ultisites S.A. module «services»

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

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

Instructions d'installation de IBM SPSS Modeler Server 16 pour UNIX

Les clusters Linux. 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com. white-paper-cluster_fr.sxw, Version 74 Page 1

Guide d'installation. Release Management pour Visual Studio 2013

OpenMediaVault installation

Aide d'active System Console

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

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

Projet : PcAnywhere et Le contrôle à distance.

But de cette présentation

Guide de l'utilisateur de l'application mobile

Récupération de fichiers effacés avec Recuva 1/ 5

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

MEDIAplus elearning. version 6.6

PPe jaune. Domingues Almeida Nicolas Collin Leo Ferdioui Lamia Sannier Vincent [PPE PROJET FTP]

Cyberclasse L'interface web pas à pas

Le Ro le Hyper V Premie re Partie Configuration et Prise en main du gestionnaire Hyper-V

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

FinImportExport Documentation Utilisateur Gestion d'environnement dans Fininfo Market

WN/CMGC/08/98. Enjeu et problématique du portage d'arpege-nemo sur calculateurs super-scalaires. Eric Maisonnave

NetSupport Notify (v2.01) Guide de démarrage. Tous droits réservés NetSupport Ltd

WGW PBX. Guide de démarrage rapide

Cours Langage C/C++ Programmation modulaire

Guide d utilisation de l utilitaire Intel One Boot Flash Update

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

Java - la plateforme

Programmation parallèle et distribuée (Master 1 Info )

Guide Utilisateur. Les communications unifiées au service de la performance opérationnelle. sfrbusinessteam.fr. Faire équipe avec vous

Serveur de travail collaboratif Michaël Hoste -

Infrastructures Parallèles de Calcul

Live box et Nas Synology

Mode operatoire Reseau pedagogique

Serveur de sauvegarde à moindre coût

Happy birthday ZSet High performance computing dans ZSet

Restriction sur matériels d impression

Exemples et tutoriels Version 7.5. Tutoriel de l'exemple Recrutement de personnel pour IBM Process Designer

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

CA ARCserve Backup r12

Journée Utiliateurs Nouvelles du Pôle ID (Informatique) Pierre Neyron, LIG/CNRS

Tout savoir sur le matériel informatique

Il faut maintenant enregistrer la naissance de bébé! Visitez notre kiosque d'enregistrement des naissances avant de quitter l'hôpital.

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Télécharger et Installer OpenOffice.org sous Windows

Envoyer des pièces jointes sans soucis

Acronis Backup & Recovery for Mac. Acronis Backup & Recovery et Acronis ExtremeZ-IP ARCHITECTURE DE RÉFÉRENCE

Guide de configuration de SQL Server pour BusinessObjects Planning

QUELQUES CONSEILS POUR LA MAINTENANCE DE VOTRE ORDINATEUR

Partager sa connexion Internet via le WiFi avec Windows 8

Contribution à la conception à base de composants logiciels d applications scientifiques parallèles.

Programmation parallèle et distribuée

A -Systèmes de fichiers 1 - FAT vs NTFS

Chapitre 5 : Les procédures stockées PL/SQL

Courriel Archiver Version 2: Sommaire. Archiver : Sommaire. Comment ça marche Support Technique Préférences. Recherche

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Configuration requise Across v6 (Date de mise à jour : 3 novembre 2014)

Les diagrammes de modélisation

Licences Windows Server 2012 R2 dans le cadre de la virtualisation

Transcription:

BE-MPI-1envois de messages bloquants Page 1 of 3 01/03/2010 Calcul parallèle et distribué, et Grilles de calculs Cours de 3ème année SI à Supélec BE de programmation MPI-1 par envois de messages bloquants Objectifs du Bureau d'etude : (parallélisation en mémoire distribuée) Stéphane Vialle Les clusters de PC sont aujourd'hui des plates-formes de calculs opérationnelles et industrielles. La distribution de tâches indépendantes se fait automatiquement dans certains environnements de développement, mais la distribution d'une application nécessitant des échanges de résultats intermédiaires ou une circulation des données (trop volumineuses pour être stockées en totalité sur chaque PC) reste à la charge du développeur. Elle demande des connaissances en algorithmique parallèle et un savoir-faire en programmation distribuée. Ce BE a pour objectif de pratiquer la programmation des clusters de PC par envois de messages à l'aide MPI. Il consiste à implanter l'algorithme du produit de matrices denses sur un anneau de processeurs (algorithme vu en cours). Plate-forme de développement : Pour les développements et mise au point : vous travaillerez sous Linux sur une machine dualcoeurs "cripc##" de la salle de TL. Pour les mesures de performances : vous utiliserez le 'ic-cluster' installé à Supélec sous Linux. Il s'agit d'un cluster de PC monosockets bi-cores(les machines ic#.ic). VOUS VOUS LOGGUEREZ SOUS UN DES COMPTES D'EXPERIMENTATION "intercell_#" sur le campus de metz de Supelec pour toute la durée du BE. Vous transfererez vos fichiers à Metz, réserverez des noeuds de calculs sur le iccluster, recompilerez vos fichiers sur ce cluster, et y exécuterez vos programmes distribués. Rmq : la version de MPI installée sur ce cluster est OpenMPI, et utilise le "ssh" associé à des certificats pour lancer ses processus sur les noeuds du cluster. Les comptes d'expérimentation ont été configuré pour cela, et possèdent déjà des certificats. Documents à rendre : Vous rendrez un SEUL document par binôme : un fichier Word (.doc) ou PDF : il sera nommé avec vos noms précédés de "BE-MPI-Bloquant". Ex : "BE-MPI-

BE-MPI-1envois de messages bloquants Page 2 of 3 01/03/2010 Bloquant-Martin-Dupont.pdf" il comportera sur la première page : vos nom et prénoms, et le nom de votre option de 3A, la date de remise du rapport, le titre ("BE de programmation MPI par envois de messages bloquants"). il comportera ensuite : pour chaque étape : une description de la parallélisation réalisée (pourquoi? comment?), vos mesures de performances (Texec, MegaFlops, SpeedUp) sur un cluster de PC, pour les plus performants de vos codes, des graphiques de synthèse représentant les performances fonction du nombre de PC utilisés et éventuellement de la taille du problème, votre analyse/synthèse des performances obtenues, en annexe : les codes sources des parties importantes du code à chaque étape (ex : les routines de calcul et de communication). Date limite de remise de vos rapports : vendfredi 5 mars 2010 à 18h00. Remise par e-mail à S. Vialle. Travail à effectuer : Stratégie de développement et de mesure de performances : MPI demande de concevoir une application parallèle dès le départ, et d'utiliser des noyaux de cacluls optimsiés sur chaque noeud pour les étapes de calculs. Afin de cumuler toutes les sources de performance on partira toujours d'un code séquentiel optimisé puis multithreadé pour ces noyaux de calculs (comme vu à la fin du premier BE). Les codes de calcul de ce BE seront évalués par leurs temps d'exécution des principales boucles de calculs et le nombre de MegaFlops associés. Vous calculerez les accélérations et efficacités des différentes version de vos codes vis-àvis du temps d'exécution optimisée et multithreadé sur un noeud multi-coeurs du cluster (référence = code parallèle OpenMP optimisé sur un noeud). Exercices : 1. Parallélisation d'un produit de matrices denses avec MPI_Sendrecv_replace sur une même machine de la salle de TL : a. Paralléliser le produit de matrices denses sur un anneau en utilisant MPI et la routine MPI_Sendrecv_replace et vérifiez l'exactitude des résultats : Enoncé détaillé. b. Ajouter une parallélisation OpenMP à la routine de calcul locale, au programme distribué de la question précédente, et vérifiez l'exactitude des résultats. 2. Prise en main du ic-cluster sur le campus de Metz de Supelec : a. Logguez vous sur une machine d'entrée de Metz par ssh depuis un 'xterm' : ssh phome.metz.supelec.fr -l intercell_# (ou # est un numéro qui vous sera affecté durant le BE). b. Logguez vous maintenant sur la frontale vera.ic (une des machines frontales

BE-MPI-1envois de messages bloquants Page 3 of 3 01/03/2010 du cluster) : ssh vera.ic c. Transférer vos fichiers sur le compte intercell_# à Metz par scp : pour transférer un fichier sur le compte à Metz : depuis une machine de Metz, sous le compte intercell_# entrez : scp <votre loggin à Gif>@cripc#.supelec.fr:<nom de votre fichier avec son chemin d'accès>. pour transférer un répertoire sur le compte de Metz : depuis une machine de Metz, sous le compte intercell_# entrez : scp -r <votre loggin à Gif>@cripc#.supelec.fr:<nom de votre fichier avec son chemin d'accès>. d. Demandez des noeuds de calculs sur le cluster à travers l'environnement OAR : Enoncé détaillé e. Re-compilez vos codes sur le ic-cluster et exécutez les pour vérifiez leur bon fonctionnement. 3. Mesures de performances sur le ic-cluster : a. Mesurez les performances d'une exécution utilisant un processus MPI et 1 thread OpenMP par noeud, sur 1, 2, 4 et 8 noeuds. b. Mesurez les performances d'une exécution utilisant un processus MPI et 2 thread OpenMP par noeud, sur 1, 2, 4 et 8 noeuds c. Tracez des courbes de performances (MegaFlops) en fonction du nombre de noeuds (nombre de machines utilisées), variant de 1 à 8 noeuds. d. Calculez et tracez le Speedup de l'exécution sur P noeuds avec 2 threads pr process MPI, par rapport à l'exécution sur un seul noeud avec 2 threads. 4. Implantez maintenant une parallélisation utilisant les routines MPI_Bsend et MPI_Recv. Mesurez et tracez les performances. 5. Si le temps le permet, implantez une parallélisation utilisant les routines MPI_Ssend et MPI_Recv (attention : lors de la réception de données veillez à ne pas écraser des données non-encore expédiées à leurs destinataires... ). Mesurez et tracez les performances. 6. Synthèse et analyse globales des résultats : quelles leçons tirez-vous de l'exploitation d'un cluster de PC?

BE MPI Bloquant Sendrecv_replace Page 1 of 2 BE de programmation MPI-1 par envois de messages bloquants Stéphane Vialle Exercice : Parallélisation en MPI, en utilisant la routine MPI_Sendrecv_replace Implantez l'algorithme de produit de matrices denses sur un anneau de processeurs (algorithme vu en cours), à l'aide de la routine MPI_Sendrecv_replace pour réaliser la circulation de données : 1. Complétez le squelette de programme "Enonce-MatrixprodRingMPI" : complétez les routines ProcessorInit (fichier init.c), ComputationAndCirculation et OneStepCirculation (fichier main.c). Enonce-MatrixprodRingMPI.zip Pour simplifier les développements, la taille des tableaux utilisés est fixée à la compilation : il vous faudra modifier votre code source et recompiler chaque fois que vous déciderez de changer le nombre de PC utilisés. 2. Compilation : Sous Linux vous utiliserez le compilateur "mpicc" d'openmpi, qui utilise gcc habituellement. Le Makefile du squelette utilise mpicc, et les comptes sur les machines cpripc# et sur le IC-cluster sont configurés pour accéder à ce compilateur. Vous pouvez cependant changer les options de compilation si elles ne vous conviennent pas. Rmq : sous Windows (non demandé dans ce BE) on peut utiliser le compilateur classique de Visual Studio et configurer le "projet" pour utiliser les fichiers d'entêtes et la bibliothèque de la version de MPI installée. 3. Exécution et mise au point : Les exécutions et les tests avec un ou plusieurs processus MPI se feront tout d'abord sur UNE seule machine pour la phase de mise au point, puis sur plusieurs machines pour la phase de mesure de performances. On multipliera des matrices de 1024x1024 "double" pour les mises au point, en lançant tous les processus sur la machine courante, c'est à dire sans préciser de liste de machines à utiliser. Ex : "mpirun -np 4./MatrixProduct". On vérifiera que l'on obtient bien les bons résultats!! Une fois le programme parallèle mis au point, on l'exécutera sur plusieurs machines en générant un fichier 'machinefile.txt' listant les PC disponibles une seule fois chacun, et en exécutant par exemple : "mpirun -np 4 -machinefile

BE MPI Bloquant Sendrecv_replace Page 2 of 2 machinefile.txt./matrixproduct" (voir plus loin pour la génération de ce fichier de machines sur le ic-cluster). 4. Mesures de performances : On multipliera des matrices de 4096x4096 "double" pour les tests de performance en précisant l'option "-machinefile machines.txt" pour lancer les processus MPI sur diverses machines (ex : "mpirun -np 4 -machinefile machines.txt MatrixProduct"). Pour évaluer rapidement le bon fonctionnement de votre implantation mesurez vos temps d'exécution sur 1 à 8 PCs en lançant seulement UN processus MPI par machine. Remarque : vous contrôlerez le nombre de processus MPI lancés par l'option "-np #" de mpirun.

BE MPI Bloquant OAR Page 1 of 2 BE de programmation MPI-1 par envois de messages bloquants Stéphane Vialle Exercice préliminaire : Prise en main du IC-cluster et de l'environnement OAR Un cluster de calcul possède toujours un environnement d'allocation/gestion de ses noeuds de calculs, et de lancement et gestion de programmes batch ou de sessions interactives. Dans le cas du IC-cluster il s'agit de l'environnement "OAR" de la communauté GRID'5000 (grille d'expérimentation française). 1. Constitution du cluster : Le IC-cluster (ou "cluster InterCell") est un cluster de 260 PCs dual-coeurs (256 PC + 4 PC de secours), équipés de processeurs Intel et installés sous Linux. Les 260 "noeuds de calcul" sont interconnectés par un unique switch Cisco Gigabit Ethernet très rapide. Cinq machines frontales sont utilisées pour accueillir les connexions des utilisateurs et pour allouer des noeuds de calcul à travers l'environnement OAR. Vous vous connecterez par ssh sur la frontale 'vera.ic' (par exemple). Vous ne vous connecterez PAS sur les noeuds de calcul par ssh, mais seulement grace aux commandes OAR. 2. Utilisation d'oar pour créer des sessions de travail interactives : La commande 'oarstat' permet de voir les 'sessions' en cours d'exécution et en attente sur le cluster. Sur le IC-cluster la commande 'oarsub -l nodes=8,walltime=5:00:00 -I' permet d'allouer 8 coeurs!! En fait, la configuration actuelle d'oar sur le IC-cluster considère des ressources de calcul, qui sont (actuellement) des coeurs. Donc, la commande précédente tente d'allouer 8 coeurs, soit 4 PC dual-coeurs, pour une durée de 5h, en mode interactif. S'il reste bien 8 coeurs de disponibles, OAR va vous allouer une session et vous logguer automatiquement sur le premier de ses 8 coeurs. Par défaut OAR alloue un seul coeur pour seulement 2h... pensez donc à préciser le nbr de coeurs voulus (deux fois le nombre de PC voulus) et la durée de session voulue! Quand une session se termine les processus en cours d'exécution dans cette session sont tués. Allouez toujours un nombre pair de coeurs, pour allouer des PC entiers (et éviter de partager un même PC avec d'autres utilisateurs). Ouvrez deux terminaux sur la frontale, puis faite une demande de session interactive par oarsub, et ensuite une commande oarstat depuis l'autre terminal sur la frontale. Vous devez observer votre session dans la liste des sessions en cours d'exécution.

BE MPI Bloquant OAR Page 2 of 2 La commande 'oardel #numéro_de_session' permet de supprimer une de vos sessions en cours d'exécution (depuis une machine frontale). Mais un simple CTRL-D entré dans la session interactive vous delogguera du premier coeur alloué, et supprimera votre session. 3. Génération de la liste des machines disponibles : Depuis n'importe quel noeud de calcul alloué par oarsub, vous disposez de la variable d'environnement : 'OAR_NODEFILE', qui indique le nom d'un fichier qui contient la liste des ressources de la session. Entrez 'more $OAR_NODEFILE' est observez la liste des ressources du cluster qui vous sont alloués. Pour générer un fichier contenant la liste des PC disponibles (la liste des "noeuds" de calcul disponibles), où chaque noeud n'est listé qu'une seule fois, exécutez la commande : sort -u $OAR_FILE_NODES > machinefile.txt Entrez 'more machinefile.txt' est observez la liste des noeuds du cluster qui vous sont alloués.