Happy birthday ZSet High performance computing dans ZSet



Documents pareils
Détection d'intrusions en environnement haute performance

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

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

Initiation au HPC - Généralités

Architecture des calculateurs

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

Limitations of the Playstation 3 for High Performance Cluster Computing

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

Multiprogrammation parallèle générique des méthodes de décomposition de domaine

Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

Contributions à l expérimentation sur les systèmes distribués de grande taille

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

T.P. FLUENT. Cours Mécanique des Fluides. 24 février 2006 NAZIH MARZOUQY

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

Windows serveur 2008 installer hyperv

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Architecture des ordinateurs

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

Métriques de performance pour les algorithmes et programmes parallèles

Programmation parallèle et distribuée

Parallélisme et Répartition

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

Quantification d incertitude et Tendances en HPC

Cluster High Performance Computing. Dr. Andreas Koch, Cluster Specialist

Analyse de performance, monitoring

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

4.2 Unités d enseignement du M1

Architectures d implémentation de Click&DECiDE NSI

Retour d expérience, portage de code Promes dans le cadre de l appel à projets CAPS-GENCI

Les environnements de calcul distribué

Infrastructures Parallèles de Calcul

Programmation parallèle et distribuée

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

Communications performantes par passage de message entre machines virtuelles co-hébergées

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

INFO-F-404 : Techniques avancées de systèmes d exploitation

Journée Scientifique Onera

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Atelier : Virtualisation avec Xen

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

Monitoring continu et gestion optimale des performances énergétiques des bâtiments

Programmation linéaire

Journée Scientifique Onera

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

FOG : Free Open-Source Ghost. Solution libre de clonage et de déploiement de systèmes d'exploitation.

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Rapport d activité. Mathieu Souchaud Juin 2007

Une comparaison de méthodes de discrimination des masses de véhicules automobiles

T. Gasc 1,2,3, F. De Vuyst 1, R. Motte 3, M. Peybernes 4, R. Poncet 5

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Tests de performance du matériel

Introduction à la Programmation Parallèle: MPI

CA ARCserve Backup Option NAS (Network Attached Storage) NDMP (Network Data Management Protocol)

Outil d aide au choix Serveurs Lot 4 Marché Groupement de Recherche

Architecture distribuée

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

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

Performances et optimisations

StruxureWare Power Monitoring v7.0. La nouvelle génération en matière de logiciel de gestion complète d énergie

DG-ADAJ: Une plateforme Desktop Grid

Une nouvelle génération de serveur

Introduction au maillage pour le calcul scientifique

Figure 3.1- Lancement du Gambit

Asynchronisme : Cadres continu et discret

Tout savoir sur le matériel informatique

Mathématique et Automatique : de la boucle ouverte à la boucle fermée. Maïtine bergounioux Laboratoire MAPMO - UMR 6628 Université d'orléans

Stephan Hadinger, Sr. Mgr Solutions Architecture, AWS. Salon du Big Data 11 mars 2015

Exécution des instructions machine

La valeur des SSD partagés dans l'informatique d'entreprise

Windows Server Chapitre 1: Découvrir Windows Server 2008

Introduction aux algorithmes MapReduce. Mathieu Dumoulin (GRAAL), 14 Février 2014

Cluster High Availability. Holger Hennig, HA-Cluster Specialist

L exclusion mutuelle distribuée

Portage d applications sur le Cloud IaaS Portage d application

Programmation parallèle et distribuée

Masses de données et calcul : à l IRIT. 8 octobre 2013

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

Windows 2000: W2K: Architecture. Introduction. W2K: amélioration du noyau. Gamme windows W2K pro: configuration.

Le Ro le Hyper V Troisie me Partie Haute disponibilite des machines virtuelles

Protection des données avec les solutions de stockage NETGEAR

Etablit des Budgets et des Quotas Utilisateurs par Montant, Nombre de pages, copies et types de fichiers.

Modélisation multi-agents - Agents réactifs

Grid5000 aujourd'hui : Architecture & utilisation

Introduction à MATLAB R

1 Introduction et modèle mathématique

Génération de code binaire pour application multimedia : une approche au vol

Symantec Backup Exec.cloud

10 leçon 2. Leçon n 2 : Contact entre deux solides. Frottement de glissement. Exemples. (PC ou 1 er CU)

Simulation du transport de matière par diffusion surfacique à l aide d une approche Level-Set

ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

Introduction aux algorithmes répartis

Exchange 2007 : Améliorations et nouvelles fonctionnalités Atelier 136. Société GRICS

Présentation d HyperV

Etude d Algorithmes Parallèles de Data Mining

Etude d Exchange, Google Apps, Office 365 et Zimbra

BIG DATA en Sciences et Industries de l Environnement

HPC by OVH.COM. Le bon calcul pour l innovation OVH.COM

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

Chapitre 2 : Abstraction et Virtualisation

Transcription:

Happy birthday ZSet High performance computing dans ZSet F. Feyel & P. Gosselet

Architectures SMP NUMA memory memory memory Distribué memory memory 2 memory memory Hybride memory memory memory memory memory memory

Architectures 3

Architectures cpu cpu exemple AMD Opteron 2218 L1 L1 128 KB, accès en 1-3 cycles horloge L2 L2 main memory Latence disk network 1024 KB, 5-25 cycles horologe 8 GB, 30-300 cycles horloge ~ 12 millisecondes??? Minimiser les accès mémoire, préserver le cache 4

Architecture cpu cpu cpu cpu Intel Xeon E5462 L1 L1 L1 L1 16 KB L2 L2 main memory 2x6 MB 8 GB Votre portable favori repose sur ce schéma! 5

But du HPC CU CU CU CU CU CU CU Objectif du HPC : les faire toutes tourner! 6

Où gagner du temps? Deux grandes étapes dans Z implicite Intégration matériau Résolution du linéaire tangent Accélérer 7 la résolution de ces deux étapes

Deux cas différents cpu cpu cpu cpu L1 L1 L1 L1 L2 Votre portable, votre station de tra L2 main memory memory memory memory memory Votre cluster, calculateur... 8

Multi-threading cpu cpu cpu cpu L1 L1 L1 L1 L2 L2 main memory private memory thread thread private memory shared memory thread private memory 9 private memory thread

Multithreading Utilisation du multithreading «transparent» des librairies mathématiques top 15:10:26 up 11 days, 5:52, 3 users, load average: 5.67, 7.04, 6.99 Tasks: 298 total, 3 running, 295 sleeping, 0 stopped, 0 zombie Cpu(s): 13.9%us, 0.5%sy, 18.7%ni, 67.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 264278748k total, 145068744k used, 119210004k free, 377004k buffers Swap: 16386292k total, 0k used, 16386292k free, 86843244k cached PID USER PR NI VIRT RES SHR S % %MEM TIME COMMAND 18532 marcadon 39 17 20.8g 19g 29m R 198.5 7.6 226,49 Zebulon_cpp_Lin

Attention, dans «top», 100% = 1 coeur Commande shift+1 Tasks: 298 total, 3 running, 295 sleeping, 0 stopped, 0 zombie Cpu0 : 98.1%us, 1.9%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 1.9%us, 0.0%sy, 0.0%ni, 98.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu2 : 0.0%us, 1.9%sy, 0.0%ni, 98.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu3 : 1.9%us, 0.0%sy, 0.0%ni, 98.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu6 : 98.1%us, 1.9%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu8 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu9 : 0.0%us, 5.8%sy, 94.2%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu10 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu11 : 0.0%us, 1.9%sy, 98.1%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu12 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu13 : 0.0%us, 0.0%sy,100.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu14 : 0.0%us, 0.0%sy,100.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu15 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 264278748k total, 138580980k used, 125697768k free, 377004k buffers Swap: 16386292k total, 0k used, 16386292k free, 86843896k cached

Accélère tout ce qui utilise les fonctions BLAS Donc certains solveurs de Zébulon : dscpack, mumps, dissection Intégration Zrun smp 4 des lois de comportement, utilisation de

Le multithreading, c'est bien : Fonctionne «sans se fatiguer» Fonctionne bien Gains appréciables Par contre, suppose une mémoire partagée Donc restreint à une seule machine / noeud

Les solveurs linéaires directs dans Zset Trois solveurs linéaires creux (aboutis) Sym. DSCPack X Mumps X Dissection X Non-sym. Multithread DD // X X X X X X X D'autres solveurs plus vieux ou expérimentaux, à ne pas utiliser sauf cas particulier Frontal Sparse-direct

DSCPack Le premier solveur linéaire optimisé interfacé dans Zset En interne, pointeurs 32bits, donc limité en taille de problème Ne traite pas les modes rigides Sauf ruse, non utilisable en décomposition de domaines Très performant

Mumps Attention! Mumps ne détecte pas très bien les modes rigides Fonctionne pour des problèmes «pas trop tordus» Utilisation possible en décomposition de domaines (feti ou generic_dd) Mumps est aussi utilisable via la DD, en solveur direct Non extensible, mais plus robuste

Dissection «Dissection» Un nouveau solveur développé à l'onera Parallélisme massif Détection propre des modes rigides Performances similaires à DSCPack Optimisation en cours (Total+Intel)

Comparaison des principaux solveurs linéaires 700 MUMPS DSCPACK DISSECTION 600 Temps (s) 500 400 300 200 100 0 50000 100000 150000 200000 250000 Nb dofs 300000 350000 400000

Comparaison des principaux solveurs linéaires 4.5 4 DISSECTION DSCPACK MUMPS Speedup 3.5 3 2.5 2 1.5 1 1 2 3 4 5 # threads 6 7 8

Mémoire distribuée ZSet ZSet memory memory memory memory ZSet ZSet

Mémoire distribuée Le solveur Mumps Permet de faire du parallélisme en solveur direct ***linear_solver mumps **parallel 4 A lancer via Zrun smpi hostfile hfile cube.inp Intéressant sur des gros problèmes

Exemple, cube 25x25x25 quad, 204 828 ddls Mono-coeur : 194 s Multi-threads (8) : 62 s Parallèle (16 fois mono-thread) : 74 s Avantages facile pour l'utilisateur, fonctionne avec le contact (!), mémoire répartie (plus GROS) Inconvénients Non extensible

Vers l'extensibilité Pour les gros problèmes seule la mémoire distribuée est réaliste (clusters) Protocole MPI : chaque processeur est responsable de ses données et de ce qu'il échange avec les autres MPI send / recv : échanges ciblés MPI All gather / reduce : communications globales Pour obtenir bonnes performances, il faut des algorithmes qui minimisent le partage de données (privilégiant les échanges ciblés et de petites quantités) Deux ingrédients : décompositions de domaine et solveur itératif

Décomposition de domaine sans recouvrement Version mécanique de la partition de graphe : Utilisation de metis/splitmesh/scotch... (****mesher) L'attribution d'un sous-domaine par processeur (virtuel) permet de bien séparer les données Zrun -mpi toto.inp (avec mise en donnée adaptée) L'interface joue un rôle fondamental

Principe Trois groupes d'équations : Équilibre des sous-domaines sous l'effet des chargements imposés et des réactions des voisins Continuité des déplacements aux interfaces Équilibre des réactions (action-réaction) La première équation est un super-comportement qui lie les déplacements d'interface et les réactions Cette équation est satisfaite exactement (grâce à un solveur direct), le sous-domaine devient une boîte noire On Choisit d'une inconnue d'interface principale (dep/effort) puis on itère jusqu'à annuler l'erreur sur la quantité duale

Solveur itératif Deux grandes opérations : Produit opérateur vecteur : calcul local (descente remontée) + échange de vecteur d'interface avec voisin Produit scalaire produit scalaire + somme de scalaire all-to-all Peu de communication mais besoin de synchronisme entre les sous-domaines = équilibrage de charges Efficace si le nombre d'itération varie peu avec la taille des problèmes par sous-domaine 2 H k C (1+log ( )) h

Performance Les méthodes fonctionnent grâce à un préconditionnement à deux échelles Représentation fiable du voisinage immédiat Transmission globale des effets à grande longueur de pénétration. On assure que les problèmes de Neumann soient bien posés.

Exemple : approche primale

Exemple : approche primale u0 =0 Erreur = déséquilibre des réactions

Exemple : approche primale Erreur = déséquilibre des réactions Preconditionneur u0 =0

Exemple : approche primale Correction u1 Erreur = déséquilibre des réactions Preconditionneur u0 =0

Problème d'extensibilité Seul les voisins communiquent, l'information met du temps à se propager

Extensibilité Contrainte d'équilibre des torseurs des efforts extérieurs pour les sous-domaines flottants Initialisation + projection Résolution d'un problème grossier qui équilibre globalement les torseurs extérieurs Principe de Saint-Venant Extensibilité garantie en 2D/3D

Variantes mises en oeuvre Choix de l'inconnue d'interface FETI : efforts BDD : déplacement Mixte : condition de Robin (expérimental) Hybride : choix pour chaque ddl (recherche) Préconditionneurs Variantes optimales et sous-optimales Prise en compte de certaines hétérogénéités Problèmes grossiers (+/-) compliqués (2D/3D) Problèmes grossiers pour plaques (expérimental) Problèmes grossiers type FETIDP/BDDC (expérimental) Utilisable avec n'importe quel solveur itératif Gradient conjugué, GMRes, BiCG Accélérations

Mise en données typique ***linear_solver generic_dd **local_solver mumps no_option **dof_kind *dof all dual **precond lumped **scaling topological **projector_schur none **projector_scaling none **iterative_solver nncg *precision 1.e-06 *max_iteration 50

Quelques performances Passage du plus gros cube possible 375 000 ddl par domaine 1 domaine par noeud 8 threads par domaine

Insertion dans une résolution Les décompositions de domaine sont un solveur linéaire Elles s'insèrent dans n'importe quel processus non-linéaire pour remplacer le solveur tangent Recherches en cours (+/- stables) Résolution de problèmes non-linéaires par sous-domaine Réutilisation de l'information numérique pour accélérer une séquence de résolution (via le recyclage des sous-espaces de Krylov) Vérification de la qualité des calculs (estimation des erreurs de discrétisation)

Accélération Krylov Version linéaire de la réduction de modèle Après chaque résolution, tri de l'information la plus significative et réutilisation (déflation ou préco.) Encapsulage des solveurs classique **iterative_solver nnsrks *eps_srks 1.e-10 *base_solver nncg

Séquence de pb NL Tirage de coefficients matériaux Un speed-up de 40% en temps peut être raisonnablement espéré

Vérification Estimation a-posteriori de la qualité des maillages ZZ2 Erreur en relation de comportement (parallélisé) Objectifs : Donner un critère d'arrêt pour les DD en fonction de la discrétisation Remailler jusqu'à garantir une certaine qualité (en cours) Exploiter l'information pour accélérer les calculs fins

Résultats préliminaires

Zfuture Simplification DD comme solveur linéaire Vérification Accélérations Krylov Stabilisation Et des features actuellement expérimentaux Non-linéaire par sous-domaines Traitement différencié des ddl normaux et tangents Introduction des outils actuellement fonctionnels des derniers raffinements FETIDP pour le 3D Traitement des très grosses hétérogénéités / des interfaces chahutées aussi Remaillage parallèle Contact parallèle Parallélisme en temps