enfr

Extension du parallélisme au calcul modal

14 juin 2011

par O. Boiteau, EDF R&D / SINETICS

L’étude des vibrations d’une structure ou la recherche de ses modes de flambement nécessitent la résolution d’un problème modal.

Suivant le cas traité (présence d’amortissement, d’effets gyroscopiques, calcul de flambement), Code_Aster propose différentes stratégies via les opérateurs génériques MODE_ITER_SIMULT et MODE_ITER_INV, les opérateurs de résolution globale CALC_MODAL/MACRO_MODE_MECA et les options CRIT_FLAMB/MODE_VIBR de STAT_NON_LINE et DYNA_NON_LINE. Au sein de chacune de ces commandes se trouvent des appels aux fonctionnalités de résolution de systèmes linéaires, qui peuvent consommer des volumes importants de mémoire et de temps CPU pour les modèles de grande taille.

Pour permettre d’économiser de la mémoire et du temps CPU, il est désormais possible d’exploiter le parallélisme au sein des opérateurs modaux. En choisissant le solveur MUMPS dans le mot-clé SOLVEUR, ces opérateurs bénéficient des mêmes avancées en terme de parallélisme que leurs cousins de la mécanique (quasi)statique !

Figure 1 : Évolution du temps et de la mémoire avec le nombre de processus

Ainsi sur le cas test de Code_Aster perf013, l’usage du solveur MUMPS sur 16 processeurs procure des gains de l’ordre de 60% en temps « utilisateur » et de 40% en mémoire RAM (figure 1). Ces gains sont intéressants mais restent modestes car le parallélisme ne concerne que 50% des opérations effectuées dans les algorithmes modaux (celles liées au solveur linéaire). Ce chantier va se poursuivre en étendant ce périmètre parallèle via l’utilisation d’algorithmes de calcul modal nativement parallèles (packages PARPACK, SLEPc…).

Pour plus d’informations sur l’usage du parallélisme, sur l’analyse des performances d’un calcul et sur les pistes d’améliorations, on pourra consulter, outre les deux documentations « dédiées solveurs linéaires » déjà citées, les notices U2.08.06 et U1.03.03.