Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


devel:memos

Mémos de PP

ce document n'est pas à jour FIXME

Je commite en 10 leçons

Quand on essaie de faire des commit, on oublie toujours une chose ou l'autre quand on n'a pas l'habitude (pas comme Romain, Ludo ou Luc qui sont des vrais pros). Voici donc une petite marche à suivre qui détaille, étape par étape, tout ce qu'il faut faire pour faire un beau commit pas foireux :

On considère que :

  • les sources PC sont dans le répertoire /Metafor_dev
  • les sources stations vont être dans /home/$USER/Metafor
  1. au préalable : pour se connecter sur les stations sans mot de passe
    1. sur le pc (cygwin) :

cd .ssh → virer known_hosts / known_hosts2 ssh-keygen -t dsa (crée nouveaux fichiers id_dsa (clé privée) et id_dsa.pub (clé publique))

  1. sur la machine : copier le contenu de id_dsa.pub dans .ssh/authorized_keys2
  2. Se mettre à jour et compiler son projet, attention à bien updater aussi les fichiers oo_nda!!!!
  3. Transférer les sources sur les stations :
  4. Dans oo_meta : battery.py clean pour nettoyer les vieilles crasses de la batteries et clean.py pour nettoyer les crasses du projet.
  5. On zippe les sources : avec WinRar, faire un fichier oom.zip (attention, pas un fichier .rar)
  6. On transfère sur les stations :
    • Méthode compliquée :
      • sftp jchamps@gaston et password
      • cd /accounts/$user (normalement il y est déjà)
      • put oom.zip
      • bye
    • Méthode moins compliquée :
      • scp oom.zip jchamps@gaston:. et password
    • Méthode simple : avec winscp
  7. Faire passer la batterie sous PC dans cygwin ou l'invite de commande :
  8. Regénérer les crasses du projet (on les a effacées pour ne pas que le zippifiage et le transfert prennent 3h)
  9. Si on n'a pas Bacon sur son PC, générer les .py sur une machine où il est installé :
    • python battery.py buildfdb dans oo_meta (faire un checkout des sources, pas besoin de compilicifier), puis zipper le répertoire apps (zip -rl9 apps.zip apps) et le rapatrier sur PC (remplacer le répertoire apps)
    • Les fichiers qu'il faut absolument ramener sont les *Bacon.py et les *.fdb.
  10. Dans oo_meta : battery.py
  11. Vérifier avec AraxisMerge les différences
  12. Petit conseil : avoir deux versions de Metafor sur le PC :
    • Une version officielle à laquelle on ne touche pas et la version de développement.
    • On lance une batterie avec la version officielle et une avec la version de développement.
    • On compare les résultats de ces deux batteries et aussi avec ceux du Repository.
  13. Dans le même temps, compiler les sources et lancer la batterie sous Gaston (Linux64, compilateur gcc) et Blueberry (Linux64, compilateur icc) 1)
  14. Si on n'utilise pas le (magnifique) script de Romain (mais c'est une erreur…):
    • On se met dans /home/$USER/Metafor
    • Sur toutes les machines : unzip /accounts/$USER/oom.zip
    • Bien nettoyer tout : effacer le repertoire /oo_meta/workspace, et dans apps si ce n'est pas fait
    • Construction des Makefile : dans le répertoire oo_meta
      • ./fullBuild.sh –with-gui sur Gaston
      • gmake -jN (N = nombre de CPU. Pour rappel : N = 4 sur Blueberry, 2 sur Gaston, Clifton et Spirou)
    • Sur les machines n'ayant pas Bacon (en théorie, aucune) :
      • Générer les fichiers .py sur Gaston, voir plus haut
      • Zipper le répertoire apps : gtar -cvzf apps.tar.gz apps
      • Copier le fichier apps.tar.gz quelque part dans /accounts/user/$USER
      • Sur la machine cible, effacer le répertoire apps, copier apps.tar.gz dans oo_meta, puis tar xvzf apps.tar.gz
    • Lancer la batterie. Dans apps : at now, enter, python battery.py, enter, ctrl d
  15. Si on utilise le (magnifique) script de Romain :
    • comp.py et jouer dans l'interface pour lui dire ce qu'on veut, c'est très facile
    • voici le tableau qui permet de choisir les paramètres
OS nb cpu Bacon GUI Battery
gaston Linux64 2 oui oui oui
blueberry Linux64 4 oui oui oui
  1. Une fois que la batterie est passée,
    1. Si on utilise le script de Romain, on a reçu un mail avec les diff
    2. Si on n'utilise pas le (magnifique) script de Romain, on se met dans apps/verif
      • Sur gaston :
        svn diff STP-Linux64-gcc.txt
        svn diff ITE-Linux64-gcc.txt
        svn diff INW-Linux64-gcc.txt
        svn diff EXW-Linux64-gcc.txt
        svn diff EXT-Linux64-gcc.txt 
      • Sur blueberry:
        svn diff STP-Linux64-icc.txt
        svn diff ITE-Linux64-icc.txt
        svn diff INW-Linux64-icc.txt
        svn diff EXW-Linux64-icc.txt
        svn diff EXT-Linux64-icc.txt 
  2. On répète 2,3 et 4 jusqu'à ce que ça marche…
  3. On commite!!!! 2)
    1. clean.py dans oo_meta
    2. Faire un zip du Repository pour eviter les couilles… :
      • cd /accounts/$USER
      • tar -cvzf Metafor_date.tar /accounts/metafor/SVN
    3. Dans TortoiseSVN (seul que j'utilise, pour d'autres interfaces svn, voir Luc ;-)), on clique droit successivement sur oo_meta et oo_nda, puis on va sur “Tortoise SVN” et sur “Check for modifications”. Dans la fenêtre qui s'ouvre, on coche “show unversioned files” et “show ignored files”.
      • Avec les “show missing”, on les remove
      • Avec les “non-unversioned”, on rajoute ceux qu'il faut ajouter → clique droit sur les fichiers “add”
      • On se met dans oo_meta/oofelie/oo_nda → “SVN commit”.
    4. Sur les stations, on se met dans apps/verif
      • Sur blueberry: svn commit *Linux64-icc*.txt, puis :wq dans le fichier qui s'ouvre
      • Sur gaston : svn commit *Linux64-gcc*.txt, puis :wq dans le fichier qui s'ouvre
    5. Sinon, on utilise le (magnifique) script de Pierre-Paul (compPP_N.sh). Ce script permet de rassembler tous les fichiers de verif de toutes les machines. Il ne reste que de les mettre aux bons endroits (par exemple, oo_meta/apps/verif) et les commiter en même temps que les sources.
  4. 3) On recompile les sources sur toutes les machines (Linux, OSF1, PC) :
    1. Sur PC : refaire un checkout des sources, puis recompiler le projet
    2. Faire un backup CD de la version PC, y compris projet
    3. Sur les stations, effacer tous les répertoires dans le répertoire Metafor : rm -rf oo_meta oo_nda,
    4. On fait un checkout (oo_meta_co, oo_nda_co)
    5. On refait 3e) et 3f) si on n'utilise pas le (magnifique) script de Romain.
    6. On lance apps.qs.cont2.
  5. Si 7 est OK, on fait un Tag de sa version : dans WinCVS : Dans modify, create a tag on selection, on met $USER_datedecommit
  6. Mettre le site à jour et envoyer 1 mail
  7. Mettre à jour le fichier CPU-batterie.xls sur le site (obligatoire si on a ajouté des nouveaux cas-tests) :
    1. Ajouter les lignes pour les nouveaux cas-tests avec les noms et ajouter 2 colonnes pour le nouveau commit.
    2. Copier-coller la colonne des temps du fichier CPU-OSF1-All.txt dans le fichier Excel après les avoir triés par ordre alphabétique!
    3. Faire CTRL-L pour les temps CPU des nouveaux (pour les mettre dans toutes les colonnes)
    4. Surligner les nouveaux cas-tests en jaune.

Petites commandes diverses

Sont regroupées ici toute une série de remarques diverses sur wincvs, l'usage de la batterie et sur Metafor

Quelques commandes utiles en vrac pour Metafor

  • Pour lancer la batterie sur un seul répertoire :
    • On se place dans ledit répertoire et on tape gmake, puis gmake verif.
    • Dans apps, on fait ./verif.sh et ./merge.sh pour updater les fichiers pas, ités…
  • Pour lancer la batterie sur un seul fichier :
    • On se place dans le répertoire dudit fichier et on tape gmake -f Makefile -i nomCasTest.res, puis gmake verif
    • Dans apps, on fait ./verif.sh et ./merge.sh pour updater les fichiers pas, ités…
  • Sur station, si des fichiers transférés foirent sans raison, faire un dos2unix nomdefichier et relancer.
  • Parfois, il y a des lignes de ^@ qui s'ajoutent lors du transfert, elles sont à éliminer bien sûr (cf point précédent)
  • Avec cvs diff nomdefichier (sur PC avec Wincvs, on utilise Araxis Merge, c'est beaucoup plus facile)
    • < : fichiers officiels
    • > : mes fichiers
  • Pour utiliser Araxis Merge pour faire des diff de fichiers dans Wincvs :
    • Aller dans Admin, preferences, onglet WinCvs et cocher la case External diff program et indiquer le chemin de Merge.exe
    • Quand on fait diff selection, cocher la case Use the external diff
  • Pour effacer des répertoires non vides : rm -rf *
  • Pour lancer une batterie en priorité basse sur PC :
    • nice -19 gmake
    • nice -19 ./batterie.sh
  • Dans Wincvs :
    • Path unix pour oo_meta, oo_nda, stp2e : /accounts/metafor/Repository
    • Path unix pour oofelie : /accounts/oofelie/Repository
  • Sur station, pour killer une batterie : ps -edf ou ps -f -u jchamps et on tape kill -9 numeroDesJobs
  • Pour nettoyer tous les makefiles, fichiers.o et exécutables sur les stations : dans oo_meta, gmake distclean
  • Lancer le débogger : (! lancer xwin !)
    • Sur Chinook
  export DISPLAY=nomPC:0
  ladebug -gui &
  • sur Spirou/Fantasio/Tsuno, Calimero et Gaston
  export DISPLAY=nomPC:0
  ddd &
  • Quand on a des problèmes de répertoires qu'il ne trouve pas : echo $QTDIR (si il ne trouve pas QT par exemple)
  • Sur station, quand la compilation merde à cause des options de compilation, en face de la ligne qui merde dans le Makefile, on bouge le @ (commentaire)
  • Pour imprimer par exemple le nodeset d'un castest :
  import castest
  domain = getDomain('castest',{})
  nodeset = domain.getNodeSet()
  print nodeset
  • Pour imprimer le pointset :
  import castest
  domain = getDomain('castest',{})
  pointset = domain.getGeometry().getPointSet()
  print pointset
  • Et ainsi de suite pour chaque getMachinSet()
  • Pour générer les fichiers .py quand on n'a pas Bacon :
    • On va sur Chinook
    • On lance apps/buildPyFiles
    • On transfère le répertoire apps sur pc et gaston : ATTENTION PAS DE CLEAN sinon on efface les .py

Pseudo interactif en batch

Petit truc de Ludo pour faire du pseudo interactif en batch : Usage de la commande screen sur les stations

Utilité : faire un restart d'un cas test en batch sur les stations. Cela permet d'avoir un beau fichier .res en restart, donc de permettre le plantage de son PC sans dommage pour le calcul sur la station ou encore de ne pas jouer avec les Makefiles…

Si nécessaire, on kill le job existant :

  ps -u user
  kill -9 numero

Ensuite :

  • Dans un fichier inp.txt, mettre la commande:
  restart('castest',timeStep);
  • Ne pas oublier de le rendre exécutable : chmod u+x inp.txt
  • Ouvrir une fenêtre Gaston (chinook n'a pas de mode screen)
  • Dans cette fenêtre, taper
  screen
  ssh chinook
  cd oo_meta
  metafor -nogui <inp.txt &>out.res 
  • Pour sortir du mode screen, taper ctrl+a ctrl+d (en gardant ctrl enfonce)

:!: L'ancien fichier .res a été écrasé si il existait déjà!!!!

1)
Dans ce qui suit, on considère qu'on travaille dans /home/$USER/Metafor
2)
:!: Ne pas oublier de commiter oo_nda, surtout les temps CPU.
3)
A présent, le commit est supposé terminé, les étapes suivantes sont de la vérification.
devel/memos.txt · Last modified: 2016/03/30 15:23 (external edit)