Page 1 SIESTE février 2005 Un coupleur dynamique de codes parallèles URL: Thierry Morel.

Slides:



Advertisements
Présentations similaires
Placement de Motifs Architecture Application Contraintes: - Charge
Advertisements

Cours Algorithmique et Analyse : Introduction
Le struts validator – framework de validation
Formation universitaire à .NET: Introduction à C#
Introduction: Concepts de la programmation
Algorithmique Résume.
Appropriation et extensions d'un logiciel libre de traitement de réseaux bayésiens complexes pour l’appréciation quantitative des risques alimentaires.
UML - Présentation.
Objectif de l’exposé.
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
Introduction à MPI Types dérivés MPI Décembre 2005
Informatique parallèle hautes performances
UML (Unified Modeling Langage)
Architecture de machines Principes généraux
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Cours Visual Basic pour Application
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Semaine #1 INF155 par Frédérick Henri.
Apprentissage du jeu de morpion
Sommaire Objectif de Peakup Principes de fonctionnement
Chaire UNESCO - Calcul numérique intensif
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Journée thématique du GDR IFS « Réduction de modèle en IFS » ENSAM – Jeudi 18 mai 2006 Validation de l’approche de la réduction a priori - POD sur l'équation.
Interface CWIPI Thierry Morel Formation OpenPALM avril 2012
Algorithmique et Programmation
Modèle, Méthode et Conception
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Semaine #1 INF130 par Frédérick Henri.
Semaine #1 INF135 par Frédérick Henri.
Points importants de la semaine Les sous-programmes. Les paramètres.
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Programmation concurrente
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.
Partie II Sémantique.
Standard Template Library
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
L’adaptativité pour un solveur de l’équation de Vlasov
Langage de modélisation graphique de systèmes
Importance du réseau dans des architectures MIMD Tout échange entre les processeurs nécessite un transfert de données via le réseau.
Introduction à l’Architecture n-tiers et Orientée Service
Algorithmique et programmation (1)‏
Créer des packages.
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1.
CALCIUM : l'outil de couplage de codes de EDF-R&D
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Qu'est-ce qu'un ERP  Outils automatisé pour modéliser les comportements d'une entreprise afin de les rendre plus automatiques.
Le langage Racket (Lisp)
Programmation Système et Réseau
Construction d'une hiérarchie mémoire faible consommation
L’Audio sur PC Comparaison Numérique vs Analogique Comparaison Audio sur PC vs Hardware dédié (DSP) Rmq: beaucoup de simulitudes avec la vidéo, mais débit.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
François CARCENAC,Frédéric BONIOL ONERA-DTIM Zoubir MAMMERI IRIT
Algorithmique : Introduction
Introduction et Généralités sur l’Algorithmique
Présentation ESTRABOX
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
Un service de partage de données pour DIET : GDS basé sur JuxMem Mathieu Jan Projet PARIS Lyon, 5 décembre 2003.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
Simulateur de microcontrôleur Intel 80C51
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
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.
1.1: notions de bases de l’informatique
Initiation aux bases de données et à la programmation événementielle
Chapitre 12 Surveillance des ressources et des performances Module S41.
Novembre 2003 Simulation numérique en vibro-acoustique par couplage de deux codes parallèles Unité de Recherche Calcul à Haute Performance François-Xavier.
Transcription de la présentation:

Page 1 SIESTE février 2005 Un coupleur dynamique de codes parallèles URL: Thierry Morel

Page 2 Le problème du couplage Pourquoi coupler des codes de calcul ? -Traiter un système dans sa globalité (océan atmosphère, fluides structure, …). -Tirer partie des avantages des codes existants pour améliorer la modélisation. Coupler des codes de calcul existants ça veut dire : -Lancer leur exécution -Échanger des informations tout au long de leur exécution -Synchroniser les calculs Prog1 Prog2 données

Page 3 Comment procéder ? Première solution : fusion des deux codes de calcul Prog1 & prog2 Program prog2 Subroutine sub_prog2(in,out) … end Program prog1 … Call sub_prog2(in, out) … end Très efficace en CPU MAIS: Problèmes d’intégration : common, unités logiques, options de compil… Maintenance ??? Modularité ? Langages différents ? Mémoire, calcul parallèle ?

Page 4 Comment procéder ? Seconde solution : utiliser une librairie de communication (PVM, MPI, …) Prog1 Prog2 Program prog2 … Call XXX_recv(données) end Program prog1 … Call XXX_send(données) end Efficace Mais couplage au cas par cas Pas réutilisable Compliqué avec plus de deux codes et de nombreux échanges

Page 5 Utilisation d’un coupleur Troisième solution : utiliser un coupleur ! Prog1 Prog2 C’est le coupleur qui lance des exécutables indépendant en parallèle Quand on veut échanger des données on appelle des primitives PUT/GET « end point» Les communications effectives sont décrites dans la namecouple d’OASIS ou dans l’IHM PALM Derrière ces primitives le coupleur utilise une librairie de communication (fichiers, pipe, PVM, MPI…) Dans OASIS, on met l’accent sur l’interpolation spatiale des champs géophysiques (grilles différentes entre les modèles) Gain énorme sur l’intégration, la maintenance, la modularité, l’interpolation, les calculs sur les données échangées, la standardisation des échanges, … PALM OASIS

Page 6 Et PALM ? Le mécanisme de couplage apporte de la souplesse, pourquoi ne pas le généraliser aux applications complexes ? Assimilation de données : des formules compliquées : Minimiser J = || x – x b || P -1 + ||H(x)-y 0 || R -1 Des tas de méthodes, plus ou moins complexes, coûteuse, appropriées … 3DFGAT : grad  x J(  x) = B -1  x +  H i T R i -1 (H i  x + d i ) 4DVAR : grad  x 0 J(  x 0 ) = B -1  x 0 +  M i,0 T H i T R i -1 (H i (M i,0 (x 0 +  x 0 )) - y 0 i ) Mais avec des opérateurs communs Avec PALM ou découpe (découple !) l’application pour ensuite l’assembler dans une interface graphique pour faciliter l’intégration. Chaque opérateur devient un programme indépendant de l’application. Mais on a besoin d’enchaîner les calculs pour reconstruire l’algorithme (ou les algorithmes), boucles, conditions … Pour cela on utilise une interface graphique Pre_PALM qui autorise les structures de contrôles autour du lancement des unités. PALM est un coupleur dynamique

Page 7 DEUX PALM PALM_RESEARCH Première version du Coupleur SPMP émulant du MPMD (pour des raisons techniques MPI) C’est fait, ça marche, c’est utilisé. N’évolue plus depuis 2001 PALM_MP Version définitive, optimisée et maintenue Vrai MPMD Plus de fonctionnalités

Page 8 Piqûre de rappel : le vocabulaire PALM Unité : composant informatique (subroutine fortran, fonction C, C++) qui consomme et produit des données Objet : quantité de donnée produite ou consommée par une unité (put/get dans le code) Branche : séquence d’unités et d’instructions Communication : échange d’un objet entre deux unités

Page 9 PALM_MP OPTIMISATION de la MEMOIRE Prog 1 Prog 2 PALM Prog 1 Prog 2 PALM Prog 1 Prog 2 PALM Prog 1 Prog 2 PALM PALM_RESEARCH : mpirun –np 3 appli PALM_MP : mpirun –np 1 PALM Mémoire statique Mémoire dynamique buffer Mémoire totale sur chaque processeur Proc 0 Proc 1 Proc 2 Mémoire statique Mémoire dynamique buffer Mémoire totale sur chaque processeur Proc 0 Proc 1 Proc 2

Page 10 PALM_MP OPTIMISATION du process management Si le nombre de processeurs est insuffisant pour faire tourner toutes les branches en //, les unités deviennent concurrentes, elles sont lancées en fonction de leur priorité Les blocs permettent de regrouper plusieurs unités en un seul exécutable pour partager de la mémoire (comme pour PALM_research) ou pour optimiser le lancement des unités

Page 11 PALM_MP Plus de souplesse pour les COMMUNICATIONS Les variables du code de branche peuvent être données directement à un PALM_Get On peut même remplir un vecteur à la volée avec une expression f90, l’expression peut faire intervenir les constantes et les variables de la branche

Page 12 PALM_MP Plus de souplesse pour les COMMUNICATIONS Les sous objets permettent de ne récupérer qu’une partie d’un objet, ou de le composer par différents objets sans intervention dans les unités Héritage des espaces pour les communications

Page 13 PALM_MP Plus de souplesse pour les COMMUNICATIONS // distribution Les distributions et les localisations sont déclarée au niveau des OBJETS dans les cartes d’identités ! PALM_LOCALISATION -name ma_loc\ ! -type replicated \ ! -description {1:3:1;5} !PALM_OBJECT -name nom_de_l_objet\ !-space nom_de_l_espace\ ! -distributor nom_du_distributeur\ ! -localisation nom_de_la_localisation\ !-tag ON/OFF\ !-time ON/OFF\ !-intent IN/OUT/INOUT\ localisation association au niveau de la communication (en général elle est automatique) objet !PALM_DISTRIBUTOR -name nom_du_distributeur\ ! -type regular/custom/regular_wh \ ! -shape shape_de_l_objet_concerne\ ! -nbproc nombre_de_proc_du_distributeur \ ! -function nom_de_la_fonction_de_distribution\ ! -comment {commentaire du distributeur}

Page 14 PALM_MP Algèbre mono ou parallèle Cartes d’identités identiques pour les unités d’algèbre et les unités utilisateur

Page 15 PALM_MP Regroupement d’unités Creation d’une nouvelle id_card Communications internes

Page 16 PALM_MP Monitorage temps réel

Page 17 PALM_MP Pour bientôt Les objets mono de taille dynamique Pour après Définition dynamique des distributions Les I/O parallèles