Calcul parallèle haute performance dans CAST3M Jean-Yves COGNARD Pierre VERPEAUX 1 – Problématique 2 – Résolution parallèle de problèmes non linéaires d’évolution 3 – Environnement de programmation parallèle 4 – Résolution des problèmes linéaires de grande taille 5 – Problèmes non linéaires de grande taille 6 – Conclusions 26 Novembre 2009 Club CAST3M - Paris 1 – Problématique Développement d’applications parallèles Ordinateurs puissants Architecture parallèle (INTEL, AMD ...) Développements complexes Performance / Portabilité Différentes architectures : Langage de programmation ? Utiliser les codes existants Développement d’applications parallèles Algorithmes parallèles “Mécanique” Bonnes performances & Bon équilibrage des charges Environnement de programmation parallèle Système indépendant du type d’ordinateur Assurer la cohérence des données Compatibilité des versions séquentielle et parallèle Le but est de résoudre « rapidement » des problèmes de grande taille Large classe de problèmes non linéaire en quasi-statique 26 Novembre 2009 Club CAST3M - Paris 2 – Résolution parallèle de problèmes non linéaires d’évolution Problème à résoudre Le problème à résoudre est non linéaire et d’évolution Découpage de l’intervalle de temps en incréments Problème non linéaire et stationnaire par incrément Algorithme de type NEWTON Procédure à deux étapes Etape 1: Intégration de la loi de comportement Problème non-linéaire local (point d’intégration) Etape 2: Correction en déplacement Problème linéaire global (Ki qi = Ri ) Test de convergence 1 3 sk-1 s k 2 t k-1 t k 26 Novembre 2009 Club CAST3M - Paris T 2 – Résolution parallèle de problèmes non linéaires d’évolution Cout des simulations non linéaires 40 35 Wall-clock time »(hour) Temps « horloge (heures) 30 25 20 15 10 5 0 14 viscoplastique Chargement monotone 80 incréments 270 itérations (Newton) 80 factorisations Wall-clock time (hour) Temps « horloge » (heures) RESO 12 INTG 10 RESO INTG TOTA 8 TOTA 6 4 Nombre deofDDL Number DOF 2 Nombre Numberde of DDL DOF 0 0 Traction - torsion matériaux Comportement Non-linéarités & géométriques Non-linéarités matériaux 1 cycle de chargement 50 incréments 280 itérations (Newton) 1 factorisation 100000 200000 300000 0 25000 50000 75000 100000 Contrainte équivalente de Mises Résolution des problèmes globaux linéaires & Intégration de la loi de comportement 26 Novembre 2009 Club CAST3M - Paris 2 – Résolution parallèle de problèmes non linéaires d’évolution Résolution parallèle de problèmes non linéaires d’évolution Approche Mécanique : 2 principaux points Résolution des problèmes linéaires globaux Techniques de type décomposition de domaine (choix?) Algorithmes de type Quasi-Newton pour réduire le coût numérique Utilisation des déplacements précédents une meilleure solution déplacements vérifiant « bien » les conditions cinématiques Choix : résolution directe du problème condensé Intégration de la relation de comportement (problème local non linéaire) Bon équilibrage des calculs Limiter les rééquilibrages dynamiques Limiter les communications Choix : utilisation d’un second découpage 26 Novembre 2009 Club CAST3M - Paris 2 – Résolution parallèle de problèmes non linéaires d’évolution Intégration en parallèle de la loi de comportement Modèle viscoplastique anisotherme Modèle de Chaboche avec écrouissage cinématique et isotrope Chargement découpé en 10 incréments 26 Novembre 2009 Club CAST3M - Paris 2 – Résolution parallèle de problèmes non linéaires d’évolution Intégration en parallèle de la loi de comportement Déformation plastique cumulée & temps CPU par élément (par incrément) 26 Novembre 2009 Club CAST3M - Paris 2 – Résolution parallèle de problèmes non linéaires d’évolution Intégration en parallèle de la loi de comportement Temps CPU par élément & temps CPU par sous structure (par incrément) 26 Novembre 2009 Club CAST3M - Paris 2 – Résolution parallèle de problèmes non linéaires d’évolution Intégration en parallèle de la loi de comportement Temps CPU par élément & temps CPU par blocs d’éléments (par incrément) 26 Novembre 2009 Club CAST3M - Paris 2 – Résolution parallèle de problèmes non linéaires d’évolution Intégration en parallèle de la loi de comportement 8 Coût numérique pour 8 processeurs Temps horloge total Time normalisé Relative Total CPU 7 6 5 4 3 2 inc 10 inc 9 inc 8 inc 7 inc 6 inc 5 inc 4 inc 3 inc 2 inc 1 Décomposition de domaine 1 0 Sequential Décomposition Domains Séquentiel de domaine 26 Novembre 2009 Blocs Blocs d’éléments Blocs d’éléments Club CAST3M - Paris 2 – Résolution parallèle de problèmes non linéaires d’évolution Intégration en parallèle de la loi de comportement Problème 3D Décomposeur automatique 4 processeurs Temps horloge normalisé 2.5 Equilibrage Sous-domaines Sous-domaines Sous-domaines Sous-domaines des calculs ? Blocs d'éléments 2.0 Blocs d’éléments 1/1 1/2 1.5 1.0 0.5 Numéro Numero du processeur 0.0 1 2 44 33 Utilisation d’un second découpage : Blocs d’éléments 26 Novembre 2009 Club CAST3M - Paris 1/8 3 – Environnement de programmation parallèle Code Eléments Finis CAST3M Code Eléments Finis orienté « objets » Différentes applications : Structure, Fluide… But : Faciliter le développement de nouveaux algorithmes Entités Objets dans la base de données NOM, TYPE, VALEUR MAILLAGE, MODELE, CHAMPS (Nœuds, Eléments), ... OPERATEURS +, -, SURF, RESO, TRAC, … RESULTATS = OPERATEUR OPERANDES ; PROCEDURES fonctions utilisées comme les OPERATEURS Regroupement d’opérations sur les objets Interface utilisateur Langage de programmation : ESOPE Parallélisation Fortran 77 + Extensions + Gestion de la mémoire Langage de commande : GIBIANE Parallélisation Boucles, tests, procédures 26 Novembre 2009 Club CAST3M - Paris 3 – Environnement de programmation parallèle ESOPE : Mémoire Virtuelle Programmée Structuration des données (C, F90, …) : FORTRAN 77 + Extensions … SEGMENT PSEG Allocation Pseudo-dynamique de la mémoire INTEGER LIST(N1) SEGMENT : 1 pointeur REAL*8 TAB(N1,N2) END SEGMENT N1 = 10 ; N2 = 15 SEGINI PSEG initialisation LIST(1) = 0 (PSEG.LIST(1)=0) SEGDES PSEG mode « inactif » SEGACT PSEG mode « actif » SEGSUP PSEG libération de la mémoire Peut déplacer un SEGMENT non utilisé de la Mémoire vers le Disque (mode « inactif » : SEGDES) Rappel des SEGMENTS si nécessaire sans demande explicite de l’utilisateur (activation de l’objet : SEGACT) 26 Novembre 2009 Club CAST3M - Paris 3 – Environnement de programmation parallèle ESOPE Parallèle : Mémoire Virtuelle Partagée Programmée Ré-utilisation directe du code séquentiel (ESOPE) Tous les segments sont partagés Limiter le nombre de nouvelles instructions Limiter les phases d’attente et d’éventuels blocages SEGACT PSEG mode « lecture seule » SEGACT PSEG*MOD mode « écriture » Implémentation de dialogues complexes entre applications SEGACT PSEG*(MOD,R=N1,W=N2) activations conditionnelles possible après N1 SEGACT PSEG N2 SEGACT PSEG*MOD par une autre application Assurer la cohérence des données & Cacher le transfert des données Utiliser les propriétés des Segments en mode « lecture seule » et « écriture » Segment en mode « écriture » une seule copie Segment en mode « lecture seule » plusieurs copies Transfert en une seule opération du bloc de données demandé 26 Novembre 2009 Club CAST3M - Paris 3 – Environnement de programmation parallèle ESOPE 2000 : Mémoire Partagée (SMP) Les applications partagent la même mémoire Synchronisation en utilisant les « pthreads » Exemple : requête en mode « écriture » Application A1 SEGACT PSEG*MOD (PSEG : A2 « écriture ») Mode « attente » surveillance de PSEG Travail… … Etude PSEG queue Propriétaire de PSEG A1 peut continuer Travail… Travail… 26 Novembre 2009 Application A2 SEGACT PSEG*MOD (PSEG utilisé par A2) Travail… SEGDES PSEG Club CAST3M - Paris 4 – Résolution de problèmes linéaires de grande taille Résolution de problèmes linéaires de grande taille Limiter le coût numérique lorsque le nombre de DDL augmente (plus de 105) Limiter le remplissage de la matrice de rigidité lors de la factorisation Encombrement de la matrice factorisée pour un cube avec N nœuds N 1.67 pour une méthode de type Cuthill Mac Kee N 1.34 pour une méthode de type Nested dissection Nested dissection Partition récursive du maillage en 2 zones Numérotation des nœuds : zone 1, zone 2, interface Minimiser l’encombrement de la matrice : Equilibrage des zones & minimiser la taille des interfaces Problème d’optimisation résolu par une méthode de Monte Carlo Similaire à une technique de décomposition de domaine Solveur direct parallèle : version “Multithreads” en mémoire partagée 26 Novembre 2009 Club CAST3M - Paris 4 – Résolution de problèmes linéaires de grande taille Le cube Remplissage de la matrice factorisée & Coût de la factorisation Cuthill-McKee : minimisation de la largeur de bande Nested dissection : limiter le remplissage de la matrice 1,0E+10 1,0E+05 Nombre d’éléments Temps CPU pour la factorisation Nombre d’éléments num ber of elem ents CPU timCPU e (s) (s) Temps Nested Cuthill Nested 1,0E+09 1,0E+04 1,0E+08 1,0E+03 num ber dof Nombre deofddl 1,0E+07 1,0E+04 1,0E+05 26 Novembre 2009 1,0E+06 1,0E+07 Cuthill num ber dof Nombre deofddl 1,0E+02 1,0E+04 1,0E+05 1,0E+06 1,0E+07 Club CAST3M - Paris 4 – Résolution de problèmes linéaires de grande taille Eprouvette de traction-torsion Remplissage Nested dissection Cuthill-McKee 1,0E+10 num ber of d’éléments elem ents Nombre 1,0E+09 Nested Cuthill 1,0E+08 1,0E+07 Nombre deofddl num ber dof 1,0E+06 1,0E+04 26 Novembre 2009 1,0E+05 1,0E+06 Club CAST3M - Paris 5 – Problèmes non linéaires de grande taille Distribution des calculs - GIBIANE Opérateur ASSIstant (parallélisation au niveau utilisateur) Soumettre un travail « élémentaire » à un « ASSISTANT » Assurer la cohérence des données & Limiter les phases d’attente Développé à partir de l’environnement de programmation ESOPE Assistant 1 CAST3M ‘OPE1’ OBJ1; Validation résultats ‘OPE2’ OBJ3; * Travail pour A1 et A2 OBJ3 = ‘ASSI’ 1 ‘OPE1’ OBJ1; OBJ4 = ‘ASSI’ 1 ‘OPE2’ OBJ3; OBJ5 = ‘ASSI’ 2 ‘OPE2’ OBJ2; …. * Attente automatique OBJ6 = OBJ3 ‘ET’ OBJ5 ; …. Serveur ESOPE Validation résultats Assistant 2 ‘OPE2’ OBJ2; Validation résultats Mode « DataFlow » : Lancer l’opération – ne pas attendre le résultat Mode « Data Parallèle » : Option ‘TOUS’ (Sous structuration) 26 Novembre 2009 Club CAST3M - Paris 5 – Problèmes non linéaires de grande taille Implémentation parallèle pour une itération Maître - Séquentiel Gestion des calculs Pb Complet Maître – Assistant (n° I1) Pb Interface Décomp Dom Blocs Elém Correction du vecteur déplacement FEQ1 = ‘ASSI’ ‘SUPE’ … RES1 ; RES1 FEQ1 . i1 Condensation du second membre FEQ2 = ‘ET’ FEQ1 ; FEQ1 DEP2 = ‘RESO’ RIG2 FEQ2 ; FEQ2 Montée - Descente DEP2 DEP3 = ‘ASSI’ ‘SUPE’ … DEP2 ; DEP2 Remontée DEP3 . i1 Accélération de convergence DEP4 = ‘ASSI’ ‘TOUS’ …. ; DEP4 . i1 DEP0 = DEP0 ‘+’ DEP4 ; DEP4 Déplacement DEP0 Intégration de la loi de comportement & Test de convergence SIG1 EPS1= ‘ASSI’ ‘ECOU’ DEP0; DEP0 FIN1 = ‘ASSI’ ‘BSIG’ SIG1 ; EPS1 . i1 SIG1 . i1 Contribution des forces internes FIN1 . i1 FIN2 = ‘ET’ FIN1 ; FIN1 Assemblage des forces internes FIN2 FIN2 RES1 = ‘ASSI’ ‘-’ FEX1 FIN2 ; Contribution des 2009 forces résiduelles RES1 . i1 - Paris 26 Novembre Club CAST3M 5 – Problèmes non linéaires de grande taille Eprouvette de traction-torsion – Chargement cyclique Comportement de la stratégie & Influence du type d’ordinateur Traction - torsion PC du IBM POWER5+ Génération maillage Incréments 8 processeurs (quad-core) & Renumérotation 16 processeurs “élastiques” (dual-core) Incréments factorisation 16 Go mémoire partagée 64 Go mémoire partagée “plastiques” Linux parallèle AIX (optimisation des paramètres) Speed-up (temps horloge) 8 7 16 14 Idéal Factorisation 50 incréments 6 5 12 10 4 8 3 2 1 6 4 2 0 Nombre de processeurs 0 0 2 4 6 Speed-up (temps horloge) Idéal Factorisation 50 incréments Nombre de processeurs de la8 taille du12problème 8 Une augmentation 0 4 16 Contrainte équivalente de Mises permet de réduire les phases séquentielles 26 Novembre 2009 Club CAST3M - Paris 5 – Problèmes non linéaires de grande taille Eprouvette CT Eprouvette CT & Modèle Etudes expérimentales Propagation de fissures Comportement Visco-plastic complexe Front de fissure Fissure Système de fixation (lien avec la machine de traction) Conditions de symétrie Fissure 26 Novembre 2009 Club CAST3M - Paris 5 – Problèmes non linéaires de grande taille Eprouvette CT Sous domaines Blocs d’éléments Décomposeur de maillage automatique (numérotation du solveur) 26 Novembre 2009 Club CAST3M - Paris 5 – Problèmes non linéaires de grande taille Eprouvette CT Speed up d’environ 10 pour la simulation non-linéaire complète avec 16 processeurs Calculateur IBM 16 processeurs (dual-core POWER5+) 64 Go mémoire partagée 240 000 DDL - 18 000 éléments 500 000 points d’intégration 16 14 Speed-up (temps horloge) Idéal Factorisation 12 10 Influence de la taille du modèle 1 100 000 DDL 80 000 éléments 200 Temps par itération (s) 2 160 000 pts int. Incrément 150 sans management 100 Incrément Incrément 8 6 4 2 0 50 Nombre Nombredeofprocesseurs processeurs 0 4 26 Novembre 2009 8 12 16 Nombre d'éléments 0 0 20000 40000 60000 80000 Club CAST3M - Paris Conclusions Réduction du coût numérique des simulations non linéaires en Eléments Finis Environnement de programmation parallèle Approche parallèle pour une large classe de problèmes non linéaires Environnement de programmation adapté au parallélisme Cacher le transfert des données & Assurer la cohérence des données Deux niveaux de développement (programmation & utilisation) Le programmeur peut focaliser son attention l’organisation du programme Système compatible avec l’architecture des ordinateurs modernes Approche parallèle pour les simulations non linéaires L’utilisation de deux découpages donne un bon équilibrage Résultats encourageants en 3D Les performances de l’approche peuvent être augmentées Démarches utilisées en « Production » (version utilisateur de CAST3M) Augmenter les performances et les possibilités du système Réduction du coût de la gestion des objets (mémoire distribuée) 26 Novembre 2009 Club CAST3M - Paris