1. Paramètres importants#
1.1. Paramètres d’ASTK#
Case "Mémoire Totale (Mo)" : MTOT
Case "Dont Aster (Mo)" : MJEV
MJEV
MJEV est la mémoire qui sera fournie à JEVEUX pour l’allocation des objets “dynamiques” (un objet dynamique est un objet dont la taille est supérieure à la limite fixée dans DEBUT/MEMOIRE/DYNAMIQUE=xxx).
MTOT
MTOT est la mémoire totale qui sera allouée au processus. En interactif, ce paramètre est sans effet. En revanche, sur le serveur aster, le gestionnaire de ressources (RMS) contrôle que le processus ne dépasse pas cette limite.
MTOT doit être > MJEV
Remarque concernant RMS
La mémoire utilisée par un processus est “multiple” : données de l’utilisateur, buffers d’entrée-sortie, exécutable et bibliothèques dynamiques, …
L’expérience a montré que pour lancer Code_Aster sur le serveur aster (version NEW9 du début 2008), la “prise en charge” du job : chargement de l’exécutable, mise en place de l’environnement d’exécution, … consomme plusieurs centaines de Mo de mémoire avant même de pouvoir commencer à traiter les données de l’utilisateur.
C’est pourquoi, le gestionnaire de batch (LSF) demande à RMS d’autoriser le processus à consommer :
MEM_RMS = MTOT + 300 Mo
Signification de MTOT
MTOT est donc la quantité de mémoire allouée au processus pour les besoins de l’utilisateur :
Un calcul “2 fois plus gros” nécessitera en principe un MTOT double.
Un tout petit calcul doit pouvoir passer avec MTOT ~ 0
A quoi sert MTOT ?
On a vu que la mémoire JEVEUX MJEV était prise sur MTOT. Le reste (MTOT - MJEV) est disponible pour :
L’espace des variables python du jeu de commande
Les allocations dynamiques faites dans le code : utilisation de Mumps, PETSc, …
1.2. Paramètres de la ligne de commande#
Sur la ligne de commande d’Aster, on peut trouver 2 paramètres concernant la gestion de la mémoire:
-mem_jeveux mjevs (Mw)
-mxmemdy mjevd (Mw)
Ces 2 paramètres sont exprimés en Mega-”mot” (Mw). Le “mot” étant l’espace mémoire nécessaire au stockage d’un INTEGER fortran (8 octets sur les machines 64 bits comme le serveur aster, 4 octets sur les machines 32 bits).
-memjeveux mjevs
mjevs est obligatoire. Il sert à dimensionner la mémoire “dynamique” JEVEUX. La valeur transmise par ASTK est celle déduite de MJEV (en changeant juste d’unité).
-mxmemdy mjevd
mjevd est facultatif. Il sert à limiter la mémoire “dynamique” JEVEUX. L’allocation dynamique JEVEUX s’arrêtera en erreur <S> dès que la longueur cumulée des objets dynamiques présents en mémoire dépassera cette limite. Pour l’instant, cette valeur ne peut être transmise à Code_Aster qu’en ajoutant le paramètre -mxmemdy sur la ligne de commande. On peut le faire avec ASTK dans le panneau “ETUDE” au bas de la fenêtre dans la zone de saisie “Arguments”.
Par exemple, pour que la mémoire dynamique de JEVEUX soit limitée à 100 Mo, sur une machine “I8” comme la Bull, il faut écrire:
-mxmemdy 12.5