Un exécutable (processus) généré sur Vargas est constitué de deux zones mémoires distinctes : STACK et DATA. En batch, les valeurs désirées pour chacune de ces zones peuvent être spécifiées à l'aide des directives LoadLeveler :
Elle contient les tableaux automatiques, les variables locales non initialisées, les contextes de procédures...
Attention : les variables privées OpenMP sont stockées dans des zones dites stack associées à chaque thread. Chacune d'elle est limitée par défaut à 4Mo. Pour dépasser cette limite et par exemple aller jusqu'à 64Mo par thread, il faut valoriser la variable d'environnement XLSMPOPTS comme suit :
export XLSMPOPTS=$XLSMPOPTS:stack=65536000
Elle contient tout le reste, c'est à dire la somme des zones mémoire classiques d'un processus Unix :
Sommairement, l'évaluation de la taille des 3 premières zones correspond à
la valeur retounée par la commande :
size -f mon_executable
Remarques
vargas : cat script.exemple
# @ wall_clock_limit = 400
# @ data_limit = 5.2GB
# @ stack_limit = 3.2GB,3.2GB
# @ job_name = Sortie.exemple2
# @ output = $(job_name).$(jobid)
# @ error = $(job_name).$(jobid)
# @ queue
...
cd $TMPDIR
...
f90 prog.f90
./a.out
...
> vargas : llsubmit script.exemple
Lorsqu'on dépasse la limite autorisée l'exécutable s'arrête faute de mémoire
et on obtient un message d'erreur.
Les différents types de messages que l'on peut obtenir sont les suivants :
exec(): 0509-036 Cannot load program test_memoire because of the following errors: 0509-026 System error: There is not enough memory available now.
1525-108 Error encountered while attempting to allocate a data object. The program will stop.
Memory fault(coredump)
Informations supplémentaires : limitations mémoire en interactif ou en batch