Lina is not Aspro

Lina

Accueil

Journal de mission
Course à pied
Ski de randonnée
Alpinisme
Voile
Ecrits
Diaporamas

Programmation

Carnet des invités

Accueil > Programmation > Lina

Lina is not Aspro

But

A partir d'une base de données aspro et d'un modèle de job, créer le job correspondant à un élément de cette base, élement que l'on appelle communément "profil".

Téléchargement

  • lina.pl : Clic droit, "save as", sauvegarder ainsi la cible du lien en tant que segd_sx.pl, rendre exécutable et placer dans le $path, typiquement sous /usr/local/bin, sur une machine de type nasstor ou xw84ptN. Licence: GPL.

    Méthode

    Ceci équivaut à la procédure aspro que l'on connait, avec les avantages;

    1. d'une utilisation sur la ligne de commande permettant une meilleure abstraction.
    2. de l'affichage en en-tête des variables remplacées dans le job modèle.

    Petit avantage 1

    Si on peut lancer une exécution ainsi;

    xw84pt1% lina.pl etqxy.mod sau3370.aspro 2202_01 
    xw84pt1% lsub etqxy_2202_01.job exec PCEXEC r1n01a

    On comprendra la possibilité d'inclure ces deux simples commandes à l'intérieur de deux boucles telles;

    pour chacun des profils du sps
        pour chacun des modèles de géométrie
            préprocesser le modèle avec lina
            déplacer le job dans son répertoire
            l'exécuter
        modèle suivant
    profil suivant.

    Un script de cet ordre pourrait ainsi être;

    #!/bin/bash
    if [ $# != 2 ] ; then
       printf "Usage : %s swath_shift actor\n" $0
       printf "as    : %s 210 c\n" $0
       exit 1
    fi
    cd /proj/sau3370/ASPRO
    for prof in `awk -F/ '/^'$sps'/{print $1}' sau3370.aspro`; do   # Pour chacun des profils
        printf "%s" $prof
        for j in $jobs; do                                          # Pour chacun des modèles de géométrie 
            lina.pl $j.mod $aspro $prof                             # Préprocesser, déplacer, exécuter job
            mv ${j}_$prof.job ../JOBS/${j}
            lsub ../JOBS/${j}/${j}_$prof.job exec PCEXEC r1n01$actor
        done                                                        # Modèle suivant  
        printf "\n"
    done                                                            # Profil suivant

    Synchroniser aisément toutes les géometries pour un swath donné sur réception du sps final de ce swath n'est alors plus qu'une affaire d'une seule commande. Celle-ci évite de ce fait toute possibilité d'erreur dans l'ordre de lancement, évitant par exemple de lancer qctra avant etqxy pour un certain profil;

    xw84pt1% main.sh 2202 c

    Ici, les 5 modèles; "etqxy diff_spread QC-X qctra sditr" pour chacun des profils 2202_01, 2202_02 ... 2202_09, soit 45 jobs, sont rangés, bien ordonnés, dans la queue d'exécution r1n01c. Souvent, on profite de la période de la nuit pour lancer une telle exécution volumineuse. Le matin venu, ou plus tard, après une visite terrain, nous sommes assurés d'avoir des données bien synchronisées avec le SPS.

    Evidemment, on a tout loisir, pour ceux qui aiment geowork, de coder ce script sous une boite de dialogue geowork, par exemple;

    modeles="etqxy diff_spread QC-X vscan sditr qctra preproc"
    cd /proj/#C1#/ASPRO
    for m in $modeles;do
       lina.pl $m.mod #C1#.aspro #01#
       mv  ${m}_#01#.job /proj/#C1#/JOBS/$m
       lsub /proj/#C1#/JOBS/$m/${m}_#01#.job exec PCEXEC $actor
    done

    Il suffit alors de lancer cet item pour l'ensemble des profils.

    Evidemment, on dira que tout ceci, à défaut de la ligne de commande, est de toute façon implémenté sous geowork de façon graphique par la création de lien de soumission.

    Ceci nous amène au petit avantage 2;

    Petit avantage 2

    Il est toujours difficile sur lecture d'un job Geocluster, voir même pénible, de discriminer le code des arguments. Une fois le job modèle ficelé et mis en production, son code est "black-boxé", et le seul intérêt de sa lecture est de voir avec quels arguments il a été créé. Dans l'exemple bien réel d'un job segou que je dois lancer ce soir se trouve dans l'en-tête du modèle une ligne "drapeau" ainsi;

    **==============================================================================
    ** Job     : segou.mod
    ** Project : sau3370
    ** Date    : 16-Oct-2008
    ** Comments:
    ** #lina
    ** GVRPA@ setenv MAXLIST 400000000
    ** GVRPA@ setenv gvr_stage /stage
    **============||======||======|=================================================
    * RDLIB FO 01
      FILE=/proj/#C1#/LIBRIS/SEGY-ARAMCO_v080918_whc.lfo
    * LIBRI TR 01                 (C#2#-C#3#),F1,STG,SELEC=MOT22=(#07#-#08#),
    * LIBRI BD 01                 BLOCK,S#1#,(RW),
    ...etc

    Lina remplace cette ligne par les noms des communs et registres trouvés dans le job modèle pour aisi donner me donner un en-tête de job segou tel;

    **==============================================================================
    ** Job     : segou.mod
    ** Project : sau3370
    ** Date    : 16-Oct-2008
    ** Comments:
    **    1 : #tape number# <2953>
    **    2 : #input stage nb from (for seg-y)# <320201>
    **    3 : #input stage nb to (for seg-y)# <320213>
    **    5 : #swath number# <2202>
    **    6 : #Processor# <Martineau>
    **    7 : #min ffid for seg-y# <    9>
    **    8 : #max ffid for seg-y# < 8317>
    **    9 : #Segy Date of creation# <02-OCT-2009>
    **   C1 : #Project# <sau3370>
    ** GVRPA@ setenv gvr_stage /stage
    **============||======||======|=================================================
    * RDLIB FO 01
      FILE=/proj/sau3370/LIBRIS/SEGY-ARAMCO_v080918_whc.lfo
    * LIBRI TR 01                 (C320201-C320213),F1,STG,SELEC=MOT22=(    9- 8317),
    * LIBRI BD 01                 BLOCK,S2953,(RW),
    ...etc
    

    Ceci me dispense de devoir lire le reste et permet donc un très rapide survol du job.

    A faire

  • La capacité de faire des opérations de shifts de caractères ( Ex : #C1<3# ) n'est pas encore implémentée.
  • Idem pour de petits calculs.
  •  

    Haut de page

    Tous droits réservés © 2003-2006 Gaétan Martineau