matlab_ex5_launch.oar 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #!/bin/bash
  2. # sur orval
  3. ################################################################################
  4. # matlab_ex5_launch.oar - exemple de batch permettant de lancer le script Matlab
  5. # pi_checkpoint_ex5.m sur un noeud / 1 coeurs pour en mode besteffort idempotent
  6. # Utilisation d'un répertoire de travail en local dans l'espace Scratch
  7. #
  8. # pi_checkpoint_ex5.m:
  9. # - Calcul de l'approximation de pi par la méthode de Leibniz
  10. # - le programme simule un job long avec des instructions "pause" inutiles
  11. # afin d'illustrer une solution de checkpoint et de reprise manuelle(*) si le
  12. # job long a été tué, cf.:
  13. # https://www-calculco.univ-littoral.fr/utilisation/lancer-un-calcul#r_beseffort
  14. #
  15. # Note: le script pi_checkpoint_ex5.m peut-être tester avec Matlab en mode
  16. # interactif: il suffit de le stopper avec CTRL+C (et le relancer une 2ième fois)
  17. #
  18. # manuelle(*) cf. idempotent
  19. #
  20. # Usage: oarsub -S ./ matlab_ex5_launch.oar
  21. #
  22. # Note: les directives OAR commencent par #OAR pour les mettre en commentaires
  23. # il faut utiliser un double #
  24. ################################################################################
  25. #-----------------------------------------------------------
  26. # chargement du module matlab (mise à jour du PATH)
  27. #
  28. # (ajout avril 2017: mise en place de lmod et easybuild sur
  29. # la plateforme)
  30. # http://lmod.readthedocs.io/en/latest/010_user.html
  31. # http://easybuild.readthedocs.io/en/latest/Introduction.html
  32. #-----------------------------------------------------------
  33. source /nfs/opt/env/env.sh >/dev/null 2>&1
  34. module load matlab
  35. #-----------------------------------------------------------
  36. # Les directives OAR
  37. #-----------------------------------------------------------
  38. # donner un nom au job
  39. #OAR -n pi_checkpoint_ex5
  40. # les ressources
  41. #OAR -l /nodes=1/core=1,walltime=24:00:00
  42. # la file de soumission
  43. #OAR -q besteffort
  44. ## À faire.
  45. ##OAR -t idempotent
  46. # notification par mail ou script
  47. #OAR --notify mail:marion@lmpa.univ-littoral.fr
  48. ##OAR --notify exec:/chemin/vers/mon/script arguments
  49. # affiner la selection des ressources avec les propriétés
  50. # voir sortie de la commande oarnodes sur le frontal pour les connaître
  51. # syntax à la SQL
  52. ## ex:novembre 2016: matlab était installé que sur orval 4 et 5
  53. ##OAR -p network_address = 'orval05' or network_address = 'orval04'
  54. ##OAR -p nodemodel = 'Dell_R820' and disktype = 'sas'
  55. # redirection des sorties standard stdout et stderr
  56. # par défaut redirection vers OAR.%jobid%.stdout et OAR.%jobid%.stderr
  57. # dans le répertoire courant
  58. # A mettre dans scratch sous votre arborescence
  59. #OAR -O pi_checkpoint_ex5.%jobid%.out
  60. #OAR -E pi_checkpoint_ex5.%jobid%.err
  61. # IMPORTANT (ajout déc.2016):
  62. # inclure dans les ressources demandées un jeton Matlab de sorte
  63. # que le script sera lancé que s'il y a bien un jeton de libre
  64. #OAR -t token:matlab=1
  65. # mode besteffort et restart automatique
  66. ##OAR -t besteffort
  67. ##OAR -t idempotent
  68. PROG=pi_checkpoint_ex5
  69. GROUP=$(id -gn $OAR_USER)
  70. #-----------------------------------------------------------
  71. # Création du répertoire temporaire local dans scratch
  72. #-----------------------------------------------------------
  73. SCRATCHDIR=/scratch/$GROUP/$OAR_USER/$OAR_JOB_NAME.$OAR_JOBID
  74. [ ! -d $SCRATCHDIR ] && mkdir $SCRATCHDIR
  75. #-----------------------------------------------------------
  76. # Recopie du programme et des données en local
  77. #-----------------------------------------------------------
  78. cd $SCRATCHDIR
  79. # programme
  80. cp $OAR_WORKDIR/$PROG.m .
  81. # recopie des données depuis les espaces Data et/ou Home
  82. # cp /nfs/home/labo/user/chemin/vers/mes/donnees .
  83. # cp /nfs/data/labo/user/chemin/vers/mes/autres/donnees .
  84. # ici il n'y en a pas sauf si un premier run avorté a eu lieu,
  85. # recopie du checkpoint "check.mat" :
  86. if [ -e $OAR_WORKDIR/check.mat ] ; then
  87. cp $OAR_WORKDIR/check.mat .
  88. fi
  89. #-----------------------------------------------------------
  90. # Execution du programme depuis l'espace scratch
  91. #
  92. # NB: options de Matlab en mode batch: -nodesktop -nodisplay -nosplash
  93. #-----------------------------------------------------------
  94. #
  95. matlab -nodesktop -nodisplay -nosplash -batch $PROG
  96. mv $OAR_WORKDIR/$OAR_STDOUT .
  97. mv $OAR_WORKDIR/$OAR_STDERR .
  98. #-----------------------------------------------------------
  99. # suppression du programme et des données utilisées en entrée
  100. # avant transfert
  101. #-----------------------------------------------------------
  102. rm ./$PROG.m
  103. #rm mes_donnees_copiees_de home
  104. #rm mes_donnees_copiees_de_data
  105. #-----------------------------------------------------------
  106. # transfert des résultats vers Home ou Data
  107. # ici vers le répertoire Home du programme
  108. #-----------------------------------------------------------
  109. cd ..
  110. cp -pR $SCRATCHDIR $OAR_WORKDIR
  111. rm -rf $SCRATCHDIR