Skip to topic | Skip to bottom
Home
Minfo05
Minfo05.SuiviTERNASr1.37 - 10 May 2006 - 07:52 - BrianAMEDROtopic end

Start of topic | Skip to actions

Evaluation et optimisation des benchmarks parallèles de la NASA (NPB) avec la bibliothèque ProActive

LogoUnsa150x60.png INRIA   ProActive   NAS  

Introduction

Certaines applications scientifiques demandent une puissance de calcul très importante et bien supérieure à la capacité d'une machine de bureau. Pour effectuer ce type de calculs, il faut utiliser des clusters qui sont en réalité un ensemble de machines (parfois plusieurs milliers) qui travaillent en parallèle.

Il est aujourd'hui courant de calculer la performance de sa machine pour la comparer à d'autres et de nombreux programmes permettent de le faire. Dans le cas d'un cluster, ces programmes ne fonctionnent plus en raison de l'aspect répartit de l'architecture. Pour pouvoir évaluer la puissance de calcul d'un cluster, la NASA, au travers de sa division NAS (NASA Advanced Supercomputing), à développer plusieurs algorithmes : les NPB (NAS Parallel Benchmarks). Ces benchmarks, basés sur des calculs de dynamique des fluides, sont devenus la référence en matière de calcul scientifique distribué. Ils bénéficient d'un large engouement de la communauté scientifique mondiale.

Le but de ce TER est donc d'étudier ces différents algorithmes, et l'implémentation qui en a été faite avec la librairie Java ProActive, développée à l'INRIA. Dans un deuxième temps, nous devrons réaliser un ensemble de tests grandeur nature allant du réseau local de l'INRIA Sophia Antipolis au GRID5000 composé de 2500 CPUs. Pour finir, si le temps nous le permet, nous pourrons implémenter le dernier algorithme de benchmarks NPB qui n'a pas encore été porté sous ProActive.

Contacts

Responsables

  • Denis Caromel
  • Christian Delbe

Etudiants

Rapports

Réunions

Réunion 1 - Prise de contact

Date et lieu : vendredi 10 février dans les labos de l'INRIA à Sophia Antipolis

Personnes présentes : C. Delbe, Brian, Vladimir, Judicaël, Vincent

Objectifs : Nous présenter, préciser et mieux cerner le sujet et ses enjeux, avoir une base pour commencer à faire le cahier des charges

Dans une première phase, nous devons nous familiariser avec le contexte du TER. Pour ce faire, nous allons nous axer sur les 2 principaux pôles :

  • NAS
    • Quels sont les enjeux d'un benchmark
    • Etudier les 4 algorithmes principaux (EP,IS,CG et FT) et les spécialités de chacun
  • ProActive
    • Qu'est-ce qu'un objet actif
    • Qu'est-ce qu'une communication asynchrone
    • Comprendre la notion de futur dans ProActive
    • Qu'est-ce qu'un descripteur de déploiement
    • Qu'est-ce qu'un noeud
    • L'appel par valeur

Il serait intéressant de comprendre ce que ProActive ajoute aux mécanismes de RMI (par exemple ProActive est asynchrone alors que RMI est synchrone) et le comparer avec l'existant (avec MPI http://www.lam-mpi.org en particulier, qui lui fonctionne avec le langage C).

Todo list

  • Faire une interface (en console suffit) pour gérer les résultats d'un benchmark (enregistrement, affichage, etc...)
  • Chacun doit envoyer sa clé publique SSH pour l'ouverture du compte sur la Grid de l'INRIA

Réunion 2 - Présentation de ProActive

Date et lieu : jeudi 16 février à Valrose

Personnes présentes : C. Delbe, Brian, Vladimir, Judicaël, Vincent

Objectifs : Nous présenter les principes de ProActive et répartir les tâches

Lors de cette réunion, Christian Delbé nous a donné plusieurs explications sur ProActive, notamment :

  • La définition d'un Objet Actif
  • Les avantages et limites de l'asynchronisme
  • La notion de futur
  • Le principe de "l'attente par nécessité".

Il nous a aussi renseigné sur le déploiement d'une application en décrivant les principes et utilisation des noeuds.

Au terme de cet exposé, nous nous sommes fixés comme ligne de conduite de tous travailler sur ProActive pendant la première semaine (les vacances), afin d'avoir un niveau de base commun. A partir de la seconde semaine, deux personnes étudienront les algorithmes NPB et leur implémentation, tandis que les deux autres verrons ProActive de façon plus avancée, eventuellement en le comparant à MPI.

Durant cette semaine, nous avons eut quelques soucis avec les mails. Certains mails, comme la confirmation de cette réunion, ne sont jamais arrivés à destination. C'est donc l'une des raison qui nous a poussé à décider d'utiliser de façon intensive les possibilités offertes par le site GForge de l'INRIA. En effet, ce dernier permet de gérer, en plus des sources, la plupart des aspects d'un projet. Ainsi, il donne accès à une multitude de services comme :

  • Une interface de gestion de bugs
  • Un forum de discussion
  • Un gestionnaire de tâches
  • Un dépôt pour la documentation
  • Une liste de diffusion

Pour conclure, cette réunion a été extrêmement enrichissante et nous permet désormais de partir sur de bonnes bases pour l'étude de ProActive. Les problèmes que nous avons rencontrés avec les emails nous ont poussés à réfléchir à d'autres modes de communications, notamment avec le forum de GForge.

TD 1 Gestion de Projet - Présentation de la charte du projet

Date et lieu : vendredi 17 février à Valrose

Personnes présentes : Mr Mallet, Brian, Vladimir, Vincent

Objectifs : Présenter la première version 0.1.2 de la charte du projet

Les points manquants :

  • Les modifications entre 2 versions : indiquer les modifications de la charte du projet avec l'ancienne version sur la page de garde afin de bien cerner les changements. Si l'explication de ces modifications apparaît trop longue, il faudra l' ajouter dans un premier chapitre avant l'introduction.
  • Fournitures : dire sous quelle forme nous rendons les livrables (jar, zip, html pour la javadoc, ...), et référencer le guide d'utilisation présent en annexe
  • Rajouter le diagramme de Gantt permettant de mettre en évidence la durée de chaque activité.
  • Pour la partie "Limites et interfaces (partie 2.3)" indiquer ce que l'on ne va pas faire, et non pas ce que l'on pourrait envisager.
  • Modifier la partie "Fonctions du produit (partie 6)" : les parties 6.2 et 6.3 ne doivent pas être présentes à cet endroit mais plutôt dans la partie fourniture et gestion des délais.

Réunion 3 - Discussions sur la charte du projet

Date et lieu : jeudi 2 mars à Valrose

Personnes présentes : C. Delbe, Brian, Judicaël, Vincent

Objectifs : Présenter la version 0.3.1 de la charte du projet

Lors de cette réunion, nous avons présenté la charte du projet à notre encadrant afin qu'il nous fasse ses critiques. Plusieurs points ont été discutés :

  • L'application permettant de gérer les résultats de tests aura une complexité supérieure à ce que nous pensions initialement.
  • Nous avions initialement intégré dans la cahier des charges un point facultatif du ter, à savoir l'implémentation du dernier benchmark (MG). Il semble que ce soit un risque important compte tenu des délais qui nous sont imposés. Nous retirerons donc ce point du cahier des charges. Il est en effet préférable de faire plus que le cahier des charges que moins.
  • La durée de la phase 2, à savoir l'optimisation et l'étude des résultats, a semblée un peu courte aux yeux de notre encadrant. Celle-ci sera donc allongée de 5 jours, soit +30%.

Suite à cette réunion, une nouvelle version de la charte va être proposée et mise en ligne.

Réunion 4 - Discussion sur la ligne de conduite et rapports d'études

Date et lieu : jeudi 9 mars à Valrose

Personnes présentes : Brian, Judicaël, Vincent, Vladimir

Objectifs : Discuter de la charte du projet 0.4.1, adopter une ligne de conduite jusqu'à la pré-soutenance, présenter à l'équipe le fruit de nos études

Jusqu'à présent, les délais sont à peu près tenus, malgré quelques difficultées rencontrées avec le déploiement d'une application sur GRID5000 (pb aujourd'hui réglé). D'ici à la pré-soutenance du 27 mars (dans 2,5 semaines ) plusieurs tâches devront être faites :

  • Avoir étudié les 4 benchmarks et identifié les zones critiques que nous devrons nous efforcer d'optimiser en phase 2 (en Avril, après les examens)
  • Avoir déployé tous les benchmarks (ie. IS, CG, EP et FT)
  • Avoir développé un prototype très simple de l'applicaton à réaliser. Ceci nous permettra de gagner du temps en nous permettant de travailler efficacement dès le début de la phase 2.

Cahier des charges Il a été décidé de retirer l'implémentation de l'algorithme MG. En effet, les délais étant très courts, la laisser dans le cahier des charges est un risque trop important. Nous verrons avec M.Mallet comment la définir comme "optionnelle".

Application à développer Différents points et idées ont été échangés à ce sujet :

  • Application d'abord en console (éventuellement graphique s'il nous reste du temps)
  • Utilisation d'un fichier XML pour la configuration de l'application
  • Eventuellement, un générateur de fichier de config
  • Génération des résultats dans un fichier compatible avec GNUPlot, ce qui permet une grande souplesse pour retravailler les résultats, par exemple sous Excel, dans une base de données etc...
  • Possibilité de paramétrer l'environnement d'execution du bench (ie. la JVM). Par exemple, paramétrage du GC.

Ce dernier point nous a fait prendre conscience qu'il nous faudra aussi étudier les différents paramétrage possibles d'une JVM. En effet, ceci peut avoir un impact non négligeable (et intéressant) sur les performances des benchmarks. Java Performance Documentation

Rapport d'étude Vladimir nous a présenté les mécanismes d'échanges de messages entre différents noeuds. Il nous a ainsi expliqué les notions de one-to-all broadcast, all-to-all broadcast, all-to-all reduce et all-to-one reduce. Nous avons vu quelques uns des algorithmes utilisés entre autre dans MPI pour implémenter ces comportements.

TD 2 Gestion de Projet - Présentation de la charte du projet

Date et lieu : lundi 13 mars à Valrose

Personnes présentes : Mr Mallet, Brian, Vincent, Judicaël

Objectifs : Présenter la version 0.4.1 de la charte du projet, et présenter le plan de pré-soutenance

L'accueil a été positif, cependant certaines remarques ont été formulées :

  • Dans la section Organisation structurelle, la répartition des tâches doit être mieux expliquée.
  • Pour l'aspect technique, nous devons préciser les versions des applications utilisées.
  • Dans les contraintes non fonctionnelles, ajouter le protocole d'accès à GRID5000
  • Préciser plus clairement les dates des différentes phases
  • Déplacer le diagramme de Gantt dans la partie Echéancier

Concernant le plan de la pré-soutenance, nous proposions de l'axer sur 3 points :

  1. Présentation du sujet
  2. Description des fournitures
  3. Organisation du travail
Nous pensions donner un temps à peu près équivalent à ces 3 parties, mais M.Mallet nous à conseillé d'insister d'avantage sur les parties 1 et 3 :
  1. Présentation du sujet : 50 %
  2. Description des fournitures : 10 %
  3. Organisation du travail : 40 %

Suivi global

Semaine 6 - Mise en place et découverte du sujet

  • Mise en place d'un forum privé ce qui nous offre une plus grande souplesse dans notre façon de travailler. Chacun peut faire part de ses difficultés, de son avancement, et les traces des discussions sont conservées. Dans le passé, ce type de forum nous a permis de travailler de façon plus efficace sur les projets.
  • Création de la page de suivi du TER
  • Rapide survol des différents algorithmes NPB et de la bibliothèque ProActive
  • Première réunion à l'INRIA avec C.Delbé
  • Répartition des tâches : Afin d'optimiser le temps de travail, deux personnes travailleront sur les algorithmes NPB, et deux autres étudieront ProActive

Semaine 7 - Cahier des charges, découverte de ProActive

  • Création du projet sur le site GForge de l'INRIA
  • Tests sur ProActive : Création d'un descripteur de déploiement, utilisation des objets actifs, documentation
  • Mises en place d'une solution nous permettant de déployer une applicaton sur nos machines personnelles au travers du réseau Internet
  • Ecriture d'une première ébauche du cahier des charges
  • Présentation de ce cahier des charges à nos encadrants et F.Mallet.

Semaine 8 - Charte du projet, étude de ProActive

  • Travail sur la charte du projet, création du diagramme de Gantt
  • Etude de ProActive, liaisons avec les descripteurs de déploiement
  • Création des accès à GRID5000

Semaine 9 - Etude de ProActive et des NPB

  • Documentation sur la programmation parallèle
  • Travail sur le déploiement
  • Réflexion sur les enjeux d'un benchmark
  • Charte du projet : Evolutions selon les conseils de notre encadrant

Semaine 10 - Etude de ProActive et des NPB

  • Etude des différents algorithmes : IS, CG, FT et EP
  • Déploiement des benchmarks sur GRID5000

Semaine 11 - Etude de ProActive et des NPB

  • Travail sur le fonctionnement d'IC2D via un tunnel SSH (echec)
  • Réflexion sur les différentes façon d'optimiser un programme Java
  • Charte du projet : Précision de certains points sur les conseils de F.Mallet

Semaine 12 - Pré-soutenance

  • Ecriture d'un outil de profilage
  • Préparation de la pré-soutenance

Semaine 13 et 14 - Examens

Semaine 15 - Application et optimisations

  • Découverte et utilisation du nouveau descripteur de déploiement de ProActive. Ce descripteur permet de sélectionner des noeuds sur la grille de façon plus facile transparente.
  • Développement de l'application de gestion des benchs : gestion du fichier de configuration en XML, lancement des benchs et récupération des résultats
  • Travail d'optimisation sur le kernel IS
  • Etude du code produit par javac
  • Comparaison des performances et optimisation du code java
  • Optimisation des reduces

Semaine 16 - Application et optimisations

  • éveloppement de l'application de gestion des benchs : traitement des résultats, ajouts de fonctionnalités permettant une plus grande souplesse dans l'execution des benchs
  • Travail d'optimisation sur le kernel FT
  • Travail sur le timer des benchs
  • Optimisation des appels sur des groupes de noeuds
  • Optimisation des barrières
  • Comparatif des performances entre l'utilisation des groupes avec ProSPMD et ProActiveGroup
  • Etude sur les performances d'un remplacement des objets actifs "Reduce" par l'utilisation des objets futures. Résultat : joli mais perte de performance importante
  • Travail sur l'utilisation des exceptions et gestion des problème d'asynchronismes liés

Semaine 17 - Application et optimisations

  • Travail d'optimisation sur les kernels EP et CG
  • Etude des différents mécanismes d'appels sur des groupes typés, notamment avec les groupes "scatter" : Forte optimisation
  • Quelques valeurs d'optimisation :
    • Kernel IS : 40-50% d'optimisation sur le calcul pur et 80% sur la phase de lancement (réduit de plusieurs minutes à quelques secondes)
    • Kernel EP : 40-50% d'optimisation
    • Des mesures et comparatifs plus précis seront effectués vendredi 5 mai sur plusieurs clusters
  • Travail sur le recyclage d'objets
  • Ecriture du rapport final

Semaine 18 - Tests comparatifs de performances et rapport

  • Ecriture du rapport
  • Etude de faisabilité de l'implémentation du kernel MG : Temps trop court
  • Préparatifs pour "Les 24 heures de Judi" : Comparatifs des différents benchs en utilisant jusqu'à 500 processeurs
  • Réalisation des graphiques comparatifs entre les version initiale et optimisée
  • Réalisation de multiples graphiques représentant les divers points important de chaque algorithme. Ce qu'ils mettent en évidence.

Quelques petites images de conclusion

Tous ces graphes ont été réalisés avec l'application que nous avons conçu. Ils représentent des tests comparatifs avec les optimisations que nous avons apporté aux implémentations initiales des NAS Parallel Benchmarks en ProActive

Comparaison pour chaque algo entre la version initiale et la notre, optimisée

Kernel IS Kernel CG
Kernel EP

Déploiement sur un très grand nombre de machines : 345

Kernel IS

Le déploiement de l'algorithme CG sur Rennes (très lourd)

On constate qu'il a provoqué une importante montée en charge des systèmes smile

Suivis individuels

Liens utiles

Général

Optimisations

Les algorithmes NPB



to top

I Attachment sort Action Size Date Who Comment
compte_rendu.pdf manage 0.1 K 16 Feb 2006 - 21:53 BrianAMEDRO  
cahier_des_charges.pdf manage 144.9 K 17 Feb 2006 - 09:41 BrianAMEDRO Version 0.2.1
charte.pdf manage 301.0 K 23 Mar 2006 - 00:18 BrianAMEDRO Version 1.0
CG-64-128-D_startTime_23-45.png manage 8.4 K 10 May 2006 - 07:39 BrianAMEDRO  
CpuClusterReport_23-45_CG-D-64-128.gif manage 9.8 K 10 May 2006 - 07:39 BrianAMEDRO  
LoadProcsClusterReport_23-45_CG-D-64-128.gif manage 10.2 K 10 May 2006 - 07:40 BrianAMEDRO  
MemoryClusterReport_23-45_CG-D-64-128.gif manage 11.0 K 10 May 2006 - 07:40 BrianAMEDRO  
NetworkClusterReport_23-45_CG-D-64-128.gif manage 9.9 K 10 May 2006 - 07:40 BrianAMEDRO  
EPmulti.png manage 7.2 K 10 May 2006 - 07:41 BrianAMEDRO  
EP-varnode-C.png manage 8.3 K 10 May 2006 - 07:42 BrianAMEDRO  
IS-4-8-16-32-64-B-Paravent.png manage 7.8 K 10 May 2006 - 07:43 BrianAMEDRO  
CGinitvsopt.png manage 8.1 K 10 May 2006 - 07:43 BrianAMEDRO  
ISinitvsopt.png manage 7.6 K 10 May 2006 - 07:44 BrianAMEDRO  
EPinitvsopt.png manage 8.3 K 10 May 2006 - 07:44 BrianAMEDRO  
Rapport-TER-25.pdf manage 853.4 K 10 May 2006 - 08:07 BrianAMEDRO Rapport final

You are here: Minfo05 > OrganisationDesTER > PagesDeSuivi > SuiviTERNAS

to top

Copyright © 1999-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback