enfr

Gestion automatique de la mémoire

31 juillet 2012

par O. Boiteau, EDF R&D / SINETICS

Une fois les paramètres physiques et numériques choisis, l’utilisateur doit toujours répondre à la délicate question :

Quelle limite mémoire attribuer à mon calcul dans Astk ?

Dans Code_Aster, cette valeur est le plus souvent liée à une étape bien précise de la simulation, celle de résolution des systèmes linéaires matriciels. Ces systèmes sont omniprésents dans la plupart des méthodes d’analyse mécanique : algorithmes non linéaires, recherche de valeurs propres, intégration de loi de comportement…

La mémoire utilisée au cours d’un calcul peut cumuler différentes composantes : objets Aster proprement dits et structures de données de librairies externes (MUMPS, PETSc…). Au fil des évolutions du code, l’optimisation de la taille de ces objets faisait appel à un paramétrage toujours plus riche et de moins en moins lisible : OUT_OF_CORE, LIBERE_MEMOIRE

Un nouveau mot-clé vient remplacer et simplifier ces paramètres. Il s’agit du mot-clé SOLVEUR/GESTION_MEMOIRE.
Pour l’instant il est limité au solveur linéaire le plus usité, MUMPS (SOLVEUR/METHODE=’MUMPS’). Lorsqu’il prend les valeurs ’IN_CORE’ ou ’OUT_OF_CORE’, on retrouve les modes de gestion habituels qui, respectivement, optimisent la vitesse de calcul ou la consommation en mémoire RAM. Par contre, ces modes sont « sans filet », aucune correction de paramétrage ne sera opérée à la volée en cas de problème.

A contrario, le nouveau mode ’AUTO’ (valeur par défaut) va opérer les meilleurs choix à la place de l’utilisateur en fonction des capacités mémoires disponibles à ce moment précis du calcul et en fonction des difficultés numériques du problème.

Enfin, un quatrième mode permet d’aider l’utilisateur à estimer le pic mémoire de son calcul (’EVAL’). Lorsque cette option est activée, le calcul s’arrête dès l’analyse du premier système et il imprime, dans le fichier message, les valeurs estimées devant permettre de relancer le calcul complet avec le bon paramétrage mémoire dans Astk.


***************************************************************************
- Taille du système linéaire : 500000

- Mémoire RAM minimale consommée par Code_Aster : 200 Mo
- Estimation de la mémoire Mumps avec GESTION_MEMOIRE=’IN_CORE’ :3500 Mo
- Estimation de la mémoire Mumps avec GESTION_MEMOIRE=’OUT_OF_CORE’ : 500 Mo
- Estimation de l’espace disque pour Mumps avec GESTION_MEMOIRE=’OUT_OF_CORE’:2000 Mo

=⇒ Pour ce calcul, il faut donc une quantité de mémoire RAM au minimum de
- 3500 Mo si GESTION_MEMOIRE=’IN_CORE’,
- 500 Mo si GESTION_MEMOIRE=’OUT_OF_CORE’.
En cas de doute, utilisez GESTION_MEMOIRE=’AUTO’.
******************************************************************************

Bien sûr, ces valeurs estimées de la mémoire sont beaucoup moins coûteuses à obtenir que le calcul complet. Elles peuvent permettre, par exemple, de calibrer un calcul en mode interactif avant de lancer le calcul complet en mode batch. Pour plus de détails, on pourra consulter la documentation d’utilisation [u4.50.01].

Ce travail n’est qu’une étape vers une simplification de l’usage des différents paramétrages numériques de Code_Aster. L’objectif est de conserver bien sûr un paramétrage très riche, indispensable aux études avancées et aux expertises, mais aussi désormais, de s’appuyer sur cette palette d’options pour proposer de plus en plus d’options automatiques, voire auto-correctives.

Disponible dans la version 11.2.3 et suivantes