Définitions

Au sujet de la mémoire (général)

Quelques rappels sur la mémoire :

  • la mémoire centrale (appelée également mémoire interne) permet de mémoriser temporairement les données lors de l'exécution des programmes. La mémoire centrale correspond à ce que l'on appelle la mémoire vive (ou RAM)
  • la mémoire de masse (appelée également mémoire externe) permet de stocker des informations à long terme, y compris lors de l'arrêt de l'ordinateur. La mémoire de masse correspond aux dispositifs de stockage magnétiques, tels que le disque dur, aux dispositifs de stockage optique, correspondant par exemple aux CD-ROM ou aux DVD-ROM, ainsi qu'aux mémoires mortes.

La mémoire virtuelle correspond à "la réunion de la mémoire physique (RAM) et des fichiers de pagination (SWAP, pagefile.sys)".

Au sujet de la mémoire (Flux)

D'un point de vue informatique, Flux est constitué :

  • de deux gros composants :
    • un composant « calcul » (partie invisible) en Fortran
    • un composant « IHM » (partie visible) en Java
  • d'une connexion entre ces composants en Java.

Un espace mémoire doit donc être alloué statiquement au démarrage de Flux ou dynamiquement au cours de l'exécution de Flux, pour le fonctionnement de chacun des composants, et la connexion entre les composants.

La répartition est représentée dans la figure ci-dessous et explicitée dans les blocs ci-dessous.

Remarque : Une mémoire additionnelle est utilisée par certains composants externes de Flux.

Mémoire calcul

La mémoire calcul est constituée de :
  • la mémoire numérique :

    C'est la mémoire utilisée pour les différentes actions de modélisation. Les actions gourmandes en taille mémoire sont le maillage en 3D et la résolution (en 2D et en 3D).

    La taille de la mémoire nécessaire est fonction de l'application (réelle / complexe) et de la taille de la matrice de résolution.

  • la mémoire caractère :

    C'est la mémoire utilisée pour le stockage des noms d'entités (paramètres / transformations / régions …) et des noms de projet présents dans le répertoire.

En ce qui concerne la gestion de la mémoire calcul (mémoire numérique + mémoire caractère), il existe 2 modes de gestion activables via les options du superviseur dans la rubrique System > Memory (voir Gestion de l'espace mémoire détaillant l'accès à cette option):
  • soit statique

    Ce mode de gestion de la mémoire est le mode par défaut : Utilisateur est coché.

    Flux utilise un "garbage collector" interne de la mémoire. Cet outil alloue au démarrage de Flux un espace mémoire global constitué de deux tableaux Fortran, l'un pour la mémoire numérique, l'autre pour la mémoire caractère. La taille de chacun de ces tableaux est contrôlée par un paramètre Fortran inscrit dans le programme principal.

    Remarque : * Définition :

    Allocation statique : la taille de la mémoire réservée au démarrage de Flux est fixée par l’utilisateur (elle est donc modifiable).

  • soit dynamique (nouveau fonctionnement possible à partir de Flux 2020)

    Pour activer ce mode de gestion de la mémoire, il faut cocher Dynamique.

    Flux gère lui-même dynamiquement au cours de son exécution, l'espace mémoire dont il a besoin pour fonctionner.

Mémoire IHM

Jusqu'à présent, la mémoire IHM n'est gérée que statiquement (Utilisateur).

La mémoire IHM est utilisée pour tout ce qui concerne l'IHM (affichage graphique, …).

Dans la zone graphique, le drapeau situé en bas à gauche donne une image sur l'utilisation de la mémoire graphique. Quand il est rouge, vous pouvez double cliquer dessus, pour forcer le processus à libérer la mémoire.

Mémoire système

La mémoire système n'est visible que dans le mode de gestion Utilisateur pour montrer qu'un espace mémoire supplémentaire est utilisé, en plus des mémoires numérique, caractère et IHM.

La mémoire système correspond à la mémoire allouée pour le bon fonctionnement du système. Elle est constituée de :

  • la mémoire « exécutable » : espace mémoire pour le programme Flux (l'exécutable).
  • la mémoire « cache » : espace mémoire pour les transferts d'infos entre le composant calcul (Fortran) et le composant IHM (Java)

    Cette mémoire est difficilement quantifiable, elle peut générer des erreurs lors de la récupération de données.

Mémoire additionnelle

Certains composants ou fonctionnalités de Flux utilisent de la mémoire additionnelle:
  • Durant l'import et l'utilisation du Modeler: libraire ACIS
  • Durant la génération du maillage: MeshGems ou ASML (si utilisé)
  • Durant la résolution: Mumps (si utilisé)
Remarque : Dans le cas de la mémoire statique, ne pas réserver toute la mémoire disponible à Flux, pour que ces composants puissent s'exécuter.