Le parallélisme multi-niveaux au service des calculs modaux
par O. Boiteau, EDF R&D / SINETICS
Pour étudier les vibrations d’une structure le mécanicien doit souvent résoudre un problème modal. Code_Aster propose plusieurs méthodologies et algorithmes au travers de différents opérateurs. Parmi ceux-ci, MACRO_MODE_MECA est particulièrement dédié aux gros calculs (en taille de maillage et/ou en nombre de modes recherchés). Une première étape avait déjà permis de gagner en robustesse et surtout en temps calcul (jusqu’à un facteur 2 en séquentiel). Une deuxième étape a consisté à introduire deux niveaux de parallélisme emboîtés afin de démultiplier les performances. Cette nouvelle approche permet un gain d’un facteur 30 en temps et 2 en pic mémoire (sur une quarantaine de processeurs) par rapport au calcul séquentiel.
![]() | |
Dans cet opérateur, la distribution des calculs modaux en sous-bandes distinctes offre un cadre idéal de parallélisme (celui de premier niveau, confer figure 1). Il permet de gagner beaucoup en temps mais au prix d’un surcoût en mémoire. Si on dispose d’un nombre de processeurs suffisant (par exemple 2 ou 4 fois le nombre de sous-bandes demandées), on peut alors enclencher un deuxième niveau de parallélisme via le solveur linéaire. On continue alors à gagner en temps mais surtout, on diminue notablement le pic mémoire.
Donc ici, on tire profit de l’union des deux niveaux de parallélisme, sans bouleverser l’architecture du code, ni ses usages.
![]() | |
![]() | |