checkpoint-dmtcp-openmp5.oar 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #!/bin/bash
  2. #------------------- CHECKPOINT OpenMP DMTCP ex5 ---------------------------
  3. #
  4. # - Idem que l'exemple n°4 (20 multiplications matricielles 2000x2000)
  5. # (cf checkpoint-dmtcp-openmp4.oar)
  6. # - A la manière de l'ex2 (cf. checkpoint-dmtcp2.oar), la gestion des
  7. # signaux entre le script OAR et le programme fortrna OpenMP est gérée:
  8. # le programme est executé jusqu'à son terme apreès une interruption et
  9. # une relance automatique grace à l'option "idempotent" d'OAR
  10. # dmtcp. les echanges de signaux entre ce script OAR et le programme
  11. # sont completement ignores, de sorte que l'option "idempotent" d'OAR
  12. # est inutile: il n'y a pas de redemarrage automatique. L'utilisateur
  13. # doit relancer lui-même relancer ce script. Il peut toutefois etre
  14. # utile:
  15. # - ex1: programme de 200 h, un checkpoint toutes les 24h (au cas ou...)
  16. # - ex2: limiter les ressources demandees en prenant le risque d'un
  17. # walltime " trop court": il suffira de relancer a partir d'un
  18. # checkpoint.
  19. # commande: oarsub -S ./checkpoint-dmtcp-openmp5.oar
  20. # IMPORTANT : la reprise de job se fait ici sur le même noeud,
  21. # merci de consulter la charge sur cluster (noeud libre) sur
  22. # https://www-calculco.univ-littoral.fr/outils_visu/drawgantt/
  23. # et EDITER la ligne: OAR -p network_address = 'orval06'
  24. # (un peu plus bas)
  25. #-------------- paramètres OAR---------------------------
  26. # walltime de 3mn30 ( donc trop court 4mn xxs sur orval06)
  27. #OAR -l core=8,walltime=00:3:30
  28. #OAR -n dmtcp-openmp5
  29. # Les fichiers de sortie sans parametres $OAR_JOBID
  30. # (=> les jobs successifs ecrivent dans les memes fichiers)
  31. #OAR -O OAR-ckpt-dmtcp5.out
  32. #OAR -E OAR-ckpt-dmtcp5.err
  33. #OAR -q default
  34. # les tests sont mis au point sur orval06
  35. # A EDITER apres consultation de :
  36. # https://www-calculco.univ-littoral.fr/outils_visu/drawgantt/
  37. # OAR -p network_address = 'orval06'
  38. # optionnel
  39. ##OAR -t besteffort
  40. #OAR -t idempotent
  41. # checkpoint OAR 60 s avant le walltime (donc ~2mn30)
  42. # Pour un exemple réel ( plusieurs heures, gros contexte, 600s (10mn))
  43. #OAR --checkpoint 60
  44. # chargement du modeul dmtcp
  45. source /nfs/opt/env/env.sh > /dev/null 2>&1
  46. module load dmtcp > /dev/null 2>&1
  47. #---------- la tâche à exécuter ------------------------
  48. # compilation ( )
  49. gfortran -fopenmp -O3 timing-matmul2000.f90 -o matmul2000
  50. #----------- pré-traitement -----------------------------
  51. # DWTFYW !
  52. echo "Debut du jobs ou restart ?"
  53. # si c'est une reprise
  54. if [ -f dmtcp_restart_script.sh ]; then
  55. echo " -> reprise du job "
  56. # piste (changement de nœuds): sed -i '/ancien_noeud/nouveau_noeud/' dmtcp_restart_script.sh
  57. # (-> testé -OK- a la mano, à scripter!)
  58. ./dmtcp_restart_script.sh &
  59. PROGPID=$!
  60. else
  61. echo " -> Debut du jobs"
  62. dmtcp_launch ./matmul2000 &
  63. PROGPID=$!
  64. fi
  65. #---------------------------------------------------------
  66. # gestion du checkpoint OAR
  67. #---------------------------------------------------------
  68. # fonction de traitement du signal OAR
  69. sighandler() {
  70. echo "reception checkpoint OAR (signal12)"
  71. # demande de checkpoint (-c) au coordinateur dmtcp
  72. dmtcp_command -c
  73. sleep 5
  74. [ -n "$PROGPID" ] && kill -9 $PROGPID
  75. SCRIPT_CHECKPOINTED="YES"
  76. }
  77. # signal Unix attendu par OAR (defaut = SIGUSR1/10, forcé ici
  78. # à 12 par le paramètre --signal 12 (cf. param OAR au début)
  79. CHKPNT_SIGNAL=12
  80. # valeur de sortie pour l'option "--idempotent"
  81. # (restart automatique) )
  82. EXIT_UNFINISHED=99
  83. # indique au script OAR de capter le signal 12
  84. trap sighandler $CHKPNT_SIGNAL
  85. # wait indispensable pour maintien des communucations
  86. # (signaux) entre ce script et le PROG
  87. while kill -0 "$PROGPID" 2>/dev/null; do
  88. wait $PROGPID
  89. done
  90. # important : le code 99 doit être retourné pour que l'option
  91. # idempotent ( relance auto.) soit effective
  92. [ -n "$SCRIPT_CHECKPOINTED" ] && exit 99
  93. #---------------------------------------------------------
  94. # fin du programme: postraitement
  95. #---------------------------------------------------------
  96. # DWTFYW!
  97. echo "---post treatement---"
  98. # suppression des ckpt (ménage)
  99. echo "fin effective du programme, suppression des checkpoints"
  100. rm ckpt_*.dmtcp dmtcp_restart_script*
  101. exit $?