u4.11.01 Procédure DEBUT#

Syntaxe#

Détail de la syntaxe
DEBUT(
    ◇ IMPR_MACRO = / "NON" (par défaut),
                   / "OUI",
    ◇ BASE = _F(
         ◆ FICHIER = / "GLOBALE",
                     / "VOLATILE",
         ◇ TITRE = text,
         ◇ CAS = text,
         ◇ NMAX_ENRE = int,
         ◇ LONG_ENRE = int,
         ◇ LONG_REPE = int,
      ),
    ◇ CATALOGUE = _F(
         ◆ FICHIER = text,
         ◇ UNITE = unit,
      ),
    ◇ CODE = / "NON",
             / "OUI",
    ◇ ERREUR = _F(
         ◇ ERREUR_F = / "ABORT",
                      / "EXCEPTION",
         ◇ ALARME = / "ALARME",
                    / "EXCEPTION",
      ),
    ⟐ DEBUG = _F(
         ◇ JXVERI = / "NON" (par défaut),
                    / "OUI",
         ◇ SDVERI = / "NON" (par défaut),
                    / "OUI",
         ◇ JEVEUX = / "NON" (par défaut),
                    / "OUI",
         ◇ ENVIMA = "TEST" (ou non renseigné),
         ◇ VERI_BASE = / "GLOBALE",
                       / "VOLATILE",
         ◇ VERI_BASE_NB = int (défaut: 125),
      ),
    ⟐ MESURE_TEMPS = _F(
         ◇ NIVE_DETAIL = / 0,
                         / 1 (par défaut),
                         / 2,
                         / 3,
         ◇ MOYENNE = / "NON" (par défaut),
                     / "OUI",
      ),
    ⟐ MEMOIRE = _F(
         ◇ TAILLE_BLOC = float (défaut: 800.0),
         ◇ TAILLE_GROUP_ELEM = int (défaut: 1000),
      ),
    ⟐ RESERVE_CPU = _F(
         ◇ / VALE = int,
           / POURCENTAGE = float,
      ),
    ⟐ RESERVE_MEMOIRE = _F(
         ◇ / VALE = int,
           / POURCENTAGE = float,
      ),
    ◇ IGNORE_ALARM = list[text],
    ◇ LANG = text,
    ◇ INFO = / 1 (par défaut),
             / 2,
    ◇ MODE = / "AUTO" (par défaut),
             / "DEBUT",
             / "POURSUITE",
)


◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles

Affichages#

Au début de l’exécution, un entête est affiché. On y trouve:

  • L’identification précise de la version utilisée: numéro de version, date des dernières modifications,

  • La date et l’heure du début de l’exécution,

  • Le nom, l’architecture, le système d’exploitation de la machine,

  • La langue utilisée pour l’affichage des messages,

  • Le type de parallélisme disponible (MPI/OpenMP), le nombre de processeurs alloués,

  • La version des bibliothèques utilisées (quand elle est disponible) pour hdf5, med, mumps, scotch,

  • Puis plusieurs informations sur la répartition de la mémoire. Par exemple:

Mémoire limite pour l'allocation dynamique : 1894.40 Mo
  ajouté à l'initialisation du processus : 1125.45 Mo
         Limite cible du processus : 3019.85 Mo

Ce qui signifie :

  • 1894.40 Mo est la quantité de mémoire réservée aux objets internes. Dans le détail : L’utilisateur a demandé 1536.00 Mo. On a retiré 10% (valeur par défaut de RESERVE_MEMOIRE/POURCENTAGE), reste 1382.40 Mo. On ajoute systématiquement 512.00 Mo pour les objets internes Jeveux, soit 1894.40 Mo.

  • 1125.45 Mo est consommé simplement en démarrant l’exécution (chargement de l’exécutable, des bibliothèques dynamiques associées, etc.). C’est une valeur mesurée.

  • 3019.85 Mo est la somme des deux précentes valeurs. C’est la quantité de mémoire totale qu’il ne faut pas dépasser.

Au cours de l’exécution, en fonction des allocations dynamiques effectuées, lorsque cette valeur varie de plus de 10% (à la hausse ou à la baisse), un message de ce type informe l’utilisateur:

La mémoire consommée actuellement hors JEVEUX est de 214.08 Mo.
La limite de l'allocation dynamique JEVEUX est fixée à 41.92 Mo.

En fin d'exécution, un bilan indique si le même calcul peut être relancé avec moins de mémoire:

La mémoire demandée au lancement est surestimée, elle est de 256 Mo.
Le pic mémoire utilisée est de 216.02 Mo.

ou si plus de mémoire est nécessaire (en effet selon les plates-formes, la limite maximum peut être dépassé sans que le système ait interrompu le calcul):

La mémoire demandée au lancement est sous-estimée, elle est de 256 Mo.
Le pic mémoire utilisée est de 273.22 Mo.

Opérandes#

Mot clé IMPR_MACRO#

Autorise ou non les affichages produits par les macros dans le fichier de message. La lecture des fichiers de message peut être pénible quand elle contient la totalité des échos des sous-commandes générées par la macro elle-même. Par défaut, seul l’écho des commandes explicitement appelées par l’utilisateur dans son jeu de commandes apparaîtra.

Mot-clé LANG#

Il permet de choisir la langue d’affichage des messages émis par le code.

Si le mot-clé n’est pas renseigné, ce sont les variables d’environnement qui détermine la langue des messages (référence: manuel de gettext). On peut par exemple définir dans le fichier ~/.bashrc: export LANG=fr_FR.UTF-8.

L’encodage (UTF-8 ou ISO-8859-1) permet d’afficher correctement les caractères accentués.

Le mot-clé LANG attend un valeur en deux lettres, par exemple “FR” (pour le français) ou “EN” (pour l’anglais).

Quand une langue est choisie (que ce soit par l’environnement ou LANG), encore faut-il que le fichier des messages traduits (fichier .mo) soit disponible. Ce fichier est attendu sous ce nom:

$ASTER_ROOT/share/locale/<lang>/LC_MESSAGES/aster_<version>.mo

où $ASTER_ROOT est le répertoire principal de l’installation (ex.: /aster ou /opt/aster), lang est le nom en minuscules de la langue (ex. en, fr, de…) et version est le nom de la version utilisée (ex. stable, testing, unstable).

Si le fichier de traduction ne peut être lu, c’est le français qui est utilisé.

Remarque

Même si le fichier de traduction existe, quand un message n’a pas été traduit, il est affiché en français (langue de rédaction des messages dans le code source).

Mot clé BASE#

La fonctionnalité de ce mot clé est de redéfinir les valeurs des paramètres des fichiers d’accès direct associés aux « bases de données » dans le cas où l’on ne désire pas utiliser ceux fixés par défaut.

Valeurs par défaut des paramètres associés aux bases de données.

GLOBALE

NMAX_ENRE

62914

LONG_ENRE

100 Kmots

LONG_REPE

2000

VOLATILE

NMAX_ENRE

62914

LONG_ENRE

100 Kmots

LONG_REPE

2000

Le mot vaut 8 octets sur plate-forme 64 bits, 4 octets sur plate-forme 32 bits.

Sous Linux 64, avec les valeurs par défaut, la procédure DEBUT allouera un fichier d’accès direct d’au plus 62914 enregistrements de 100 Kmots (le K vaut 1024) pour la base “GLOBALE”.

Remarque

La taille réelle du fichier est dynamique ; elle dépend du volume d’informations à stocker effectivement. Les informations sont stockées dans des fichiers ne dépassant pas 12 Go chacun. Il est possible de modifier cette valeur en passant un argument sur la ligne de commande de l’exécutable derrière le mot clé --max_base=taille où taille est une valeur réelle mesurée en Mo. Pour la base Globale, qui peut être sauvegardée et ré-utilisée en donnée d’un calcul, la taille maximum initiale en POURSUITE est conservée telle quelle si le paramètre --max_base n’est pas utilisé, mais peut-être redéfini au besoin de cette manière. En pratique, cette option n’est pas utile, la taille maximale étant de 2 To.

Opérande FICHIER#

Nom symbolique de la base considérée.

Opérandes LONG_ENRE / NMAX_ENRE / LONG_REPE#

Définition des paramètres de la base de données (fichiers d’accès direct).

LONG_ENRE est la longueur des enregistrements en Kmots des fichiers d’accès directs utilisés.

Remarque

Le gestionnaire de mémoire JEVEUX utilise ce paramètre pour déterminer deux types d’objets : les gros objets qui seront découpés en autant d’enregistrements que nécessaire, et les petits objets qui seront accumulés dans un tampon de la taille d’un enregistrement avant d’être déchargé.

NMAX_ENRE est le nombre d’enregistrements par défaut, cette valeur est déterminée à partir de LONG_ENRE et d’un paramètre d’exploitation sur la plate-forme de référence Linux 64 fixé à 2 To pour la taille totale maximale d’une base de données, si cette valeur n’a pas été modifiée par l’utilisation du mot-clé --max_base sur la ligne de commande de l’exécutable.

Remarque

Les deux opérandes LONG_ENRE et NMAX_ENRE doivent être utilisés avec précaution, un mauvais usage pouvant conduire à l’arrêt brutal du programme par saturation des fichiers d’accès direct. La cohérence entre la taille maximale du fichier et la valeur résultant du produit des deux paramètres LONG_ENRE et NMAX_ENRE est vérifiée en début d’exécution.

LONG_REPE est la longueur initiale du répertoire (nombre maximal d’objets adressables par JEVEUX), elle est gérée dynamiquement par le gestionnaire de mémoire qui étend la taille du répertoire et de tous les objets système associés au fur et à mesure des besoins.

Remarque

Le choix par l’utilisateur de modifier ces différents paramètres détermine de façon définitive certaines caractéristiques de la base GLOBALE qui ne peuvent plus être modifiées en POURSUITE.

Mot clé CODE#

Ce mot clé est destiné uniquement aux fichiers de commandes des cas-tests. Il modifie le comportement en cas d’erreur ou d’exception, active la couverture des mots-clés…

Mot clé ERREUR#

Permet de modifier le comportement du code en cas d’erreur <F>.

Opérande ERREUR_F#

En cas d’erreur, le code interrompt l’exécution normale du jeu de commandes.

Par défaut, une exception est alors levée (pour la définition détaillée d’une exception Python, on se reportera à la documentation de Python ou à celle du superviseur, cf. [U1.03.01]). Dans ce cas, le code exécute la commande FIN ( cf. [U4.11.02]) qui ferme alors la base afin de permettre la poursuite éventuelle du calcul. On remarquera que, bien que l’erreur initiale soit dite «fatale» (<F>), le diagnostic est <S>_ERROR puisque l’exception est «récupérée» par FIN. Cette base sera ensuite recopiée par le gestionnaire d’études. Ceci est le comportement quand ERREUR_F=”EXCEPTION”.

Si ERREUR_F=”ABORT”, cela signifie qu’on demande explicitement au code d’interrompre définitivement l’exécution du jeu de commandes en cas d’erreur fatale (<F>). La commande FIN n’est pas exécutée, la base n’est donc pas fermée correctement, elle n’est pas recopiée et aucune reprise du calcul n’est possible.

Remarques

Pour l’exécution des cas-tests par les développeurs, l’arrêt par ABORT est automatique et par défaut. Ceci est activé par la présence du mot-clé facteur CODE (sauf si ERREUR_F précise autre chose).

En cas de manque de temps CPU, de mémoire, pour toutes erreurs de type <S> et les exceptions, le comportement est celui décrit quand ERREUR_F=”EXCEPTION”.

Mot clé IGNORE_ALARM#

Permet à l’utilisateur de supprimer l’affichage de certaines alarmes (dont il connaît l’origine) afin d’identifier plus facilement les autres alarmes qui pourraient apparaître.

Lors de l’exécution de la commande FIN, on affiche systématiquement un tableau récapitulatif des alarmes émises pendant l’exécution (et le nombre d’occurrences). Les alarmes ignorées par l’utilisateur sont précédées de “*” pour les distinguer (et elles apparaissent même si elles n’ont pas été émises).

Les alarmes sont désignées à partir de la nomenclature figurant entre les caractères < et >, par exemple : IGNORE_ALARME = (“MED_2”, “SUPERVIS_40”,…).

Mot clé DEBUG#

Option de déboggage (réservée aux développeurs et à la maintenance du code).

Opérande JXVERI#

Permet de contrôler l’intégrité des segments de la mémoire entre deux exécutions de commandes consécutives. Par défaut l’exécution s’effectue sans « DEBUG ». Cette option est systématiquement activée en présence du mot clé CODE.

Opérande ENVIMA#

Permet d’afficher les valeurs des paramètres définis dans la routine ENVIMA caractérisant la machine [D6.01.01].

Opérande JEVEUX#

Permet d’activer le mode de fonctionnement en debug du gestionnaire de mémoire JEVEUX: déchargements sur disque non différés et affectation des segments valeurs à une valeur indéfinie [D6.02.01].

Opérande SDVERI#

L’usage de ce mot clé est à destination des développeurs. Attention, cette fonctionnalité peu provoquer un surcoût non négligeable lors de l’exécution.

Ce mot clé déclenche la vérification des structures de données produites par les opérateurs. Il est utilisé dans le cadre des procédures de développement du code dans les tests de non régression. Si le mot clé CODE est présent, ce mot clé prend la valeur par défaut “OUI”.

Mot-clé MESURE_TEMPS#

Le mot clé MESURE_TEMPS permet de choisir le niveau de détail des impressions de temps CPU qui seront affichées dans le fichier de messages par les commandes effectuant des calculs élémentaires, des résolutions de systèmes linéaires, du déchargement d’objets sur disque ou des communications MPI.

Opérande NIVE_DETAIL#

◊    NIVE_DETAIL    =    0 aucune impression.
                    =    1 impressions par défaut.
                    =    2 impressions plus détaillées:
                    =    3 impressions plus détaillées et impression
                           incrémentale pour chaque pas de temps.

Par défaut, à la fin de chaque commande, on imprimera une ligne du type :

#1.Resolution.des.systemes.lineaires CPU.(USER+SYST/SYST/ELAPS): 7.52 0.79 11.22

#2.Calculs.elementaires.et.assemblages CPU.(USER+SYST/SYST/ELAPS): 15.07 0.70 15.77


#1.Resolution.des.systemes.lineaires CPU (USER+SYST/SYST/ELAPS): 7.72 0.82 8.72

#1.1.Numerotation,.connectivité.de.la.matrice CPU (USER+SYST/SYST/ELAPS): 0.21 0.02 0.31

#1.2.Factorisation.symbolique CPU (USER+SYST/SYST/ELAPS): 0.58 0.05 1.28

#1.3.Factorisation.numerique.(ou.precond.) CPU (USER+SYST/SYST/ELAPS): 6.78 0.73 7.71

#1.4.Resolution CPU (USER+SYST/SYST/ELAPS): 0.15 0.02 0.35

#2.Calculs.elementaires.et.assemblages CPU (USER+SYST/SYST/ELAPS) : 28.87 0.64 29.47

#2.1.Routine.calcul CPU (USER+SYST/SYST/ELAPS): 26.61 0.56 26.61

#2.1.1.Routines.te00ij CPU (USER+SYST/SYST/ELAPS): 24.58 0.07 25.78

#2.2.Assemblages CPU (USER+SYST/SYST/ELAPS): 2.26 0.08 3.36

#2.2.1.Assemblage.matrices CPU (USER+SYST/SYST/ELAPS): 2.02 0.06 3.12

#2.2.2.Assemblage.seconds.membres CPU (USER+SYST/SYST/ELAPS): 0.24 0.02 0.37

Lors des calculs parallèles (MPI), le temps passé dans les communications est également affiché:

#4 Communications MPI CPU (USER+SYST/SYST/ELAPS): 12.67 0.50 12.68

Opérande MOYENNE#

Le mot-clé MOYENNE permet de contrôler l’affichage de statistiques supplémentaires exclusivement pour les calculs parallèles. Il s’agit de la moyenne des mesures sur tous les processeurs ainsi que l’écart-type de ces mesures.

Chaque temps affiché est alors complété ainsi:

#1 Résolution.des.systèmes.linéaires CPU (USER+SYST/SYST/ELAPS): 0.29 0.00 0.35
(moyenne....diff..procs) CPU (USER+SYST/SYST/ELAPS): 0.30 0.00 0.47
(écart-type.diff..procs) CPU (USER+SYST/SYST/ELAPS): 0.01 0.00 0.05

Mot-clé MEMOIRE#

L’allocation des différentes structures de données est une allocation dynamique, l’utilisateur indique les limites de ressource lors du lancement de l’exécutable dans l’interface d’accès.

Opérande TAILLE_GROUP_ELEM#

Ce paramètre donne le nombre maximum d’éléments finis d’un même type qui seront regroupés dans un groupe d’éléments.

Ce paramètre influence les performances mémoire et CPU des calculs élémentaires et des assemblages.

Quand on augmente tgrel, on doit en général gagner du temps CPU. En revanche, les objets JEVEUX sont plus gros, ce qui peut nécessiter plus de mémoire.

Opérande TAILLE_BLOC#

Ce paramètre donne la taille des blocs des matrices factorisées pour le solveur LDLT. Cette taille est donnée en kiloR8 (1 kiloR8 = 1024 réels). Ce paramètre influe sur le nombre d’opérations d’entrée/sortie et donc sur le temps d’assemblage et de résolution. Par défaut cette valeur est fixée à 800 kiloR8, soit 8 enregistrements par défaut sur le fichier d’accès direct associé à la base JEVEUX.

Mot-clé CATALOGUE#

Ce mot clé est réservé aux développeurs, il est utilisé lors de l’opération de compilation des catalogues d’éléments pour obtenir le fichier sous forme de base JEVEUX.

Opérande FICHIER#

Ne peut prendre que la valeur “CATAELEM”.

Opérande UNITE#

Numéro d’unité logique associée aux catalogues d’éléments. Dans les procédures de construction du catalogue d’éléments, on utilise comme valeur 4. Le fichier fort.4 est obtenu à partir du contenu du répertoire des sources à l’aide d’une procédure python.

Mot-clé RESERVE_CPU#

Permet de réserver une part du temps CPU attribué au job pour terminer proprement l’exécution en cas d’arrêt par manque de temps CPU détecté par une commande. Ce mécanisme n’est utile que dans le cas d’une exécution batch. La valeur de cette réserve peut être indiquée en valeur absolue ou bien sous forme d’un pourcentage du temps CPU total.

Lorsque le mot clé CODE est présent, c’est à dire pour l’ensemble des tests, on impose systématiquement une réserve de temps CPU de 10 secondes si le mot clé VALE est absent.

A la fin de l’exécution, il peut-être nécessaire d’effectuer des opérations de compression avant transfert des fichiers de résultats ou de la base Globale qui sont parfois très coûteuses,.

Opérande VALE#

Il s’agit de la valeur exprimée en secondes soustraite au temps CPU total, sur lequel certaines commandes globales se basent pour arrêter proprement l’exécution.

Opérande POURCENTAGE#

Pourcentage soustrait au temps CPU total, sur lequel certaines commandes globales se basent pour arrêter proprement l’exécution.

Mot-clé RESERVE_MEMOIRE#

Permet de réserver une part de la mémoire attribuée au job pour les objets autres que les objets internes Jeveux (ceux dont on ne peut pas mesurer précisément la taille). Ce mécanisme n’est utile que dans le cas d’une exécution batch. La valeur de cette réserve peut être indiquée en valeur absolue ou bien sous forme d’un pourcentage de la mémoire demandée initialement.

Opérande VALE#

Il s’agit de la valeur exprimée en Mo (1024 ko, soit 1024 x 1024 octets) qui sera soustraite à la quantité de mémoire demandée initialement.

Opérande POURCENTAGE#

Pourcentage de la mémoire demandée initialement qui sera allouée à la réserve et donc non disponible pour les objets Jeveux.