enfr

Le parallélisme multi-niveaux au service des calculs modaux

1er mars 2013

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.

Figure 1. Principe du parallélisme à deux niveaux mis en œuvre dans MACRO_MODE_MECA : 4 sous-bandes de calcul sur 8 processeurs.

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.

Tableau 1. Comparaison des performances de MACRO_MODE_MECA sur le cas-test perf016a (plaque carrée en éléments de coques) : nombre de degrés de liberté=4.0M, 8 sous-bandes équilibrées sur l’intervalle [0Hz,4000Hz] totalisant 50 modes
Tableau 2. Comparaison des performances de MACRO_MODE_MECA sur une étude sismique : nombre de degrés de liberté=0.7M, on recherche 448 modes dans l’intervalle [0Hz,60Hz] en découpant en 20 sous-bandes équilibrées