|
@@ -0,0 +1,133 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+
|
|
|
|
+# sur orval
|
|
|
|
+################################################################################
|
|
|
|
+# matlab_ex5_launch.oar - exemple de batch permettant de lancer le script Matlab
|
|
|
|
+# pi_checkpoint_ex5.m sur un noeud / 1 coeurs pour en mode besteffort idempotent
|
|
|
|
+# Utilisation d'un répertoire de travail en local dans l'espace Scratch
|
|
|
|
+#
|
|
|
|
+# pi_checkpoint_ex5.m:
|
|
|
|
+# - Calcul de l'approximation de pi par la méthode de Leibniz
|
|
|
|
+# - le programme simule un job long avec des instructions "pause" inutiles
|
|
|
|
+# afin d'illustrer une solution de checkpoint et de reprise manuelle(*) si le
|
|
|
|
+# job long a été tué, cf.:
|
|
|
|
+# https://www-calculco.univ-littoral.fr/utilisation/lancer-un-calcul#r_beseffort
|
|
|
|
+#
|
|
|
|
+# Note: le script pi_checkpoint_ex5.m peut-être tester avec Matlab en mode
|
|
|
|
+# interactif: il suffit de le stopper avec CTRL+C (et le relancer une 2ième fois)
|
|
|
|
+#
|
|
|
|
+# manuelle(*) cf. idempotent
|
|
|
|
+#
|
|
|
|
+# Usage: oarsub -S ./ matlab_ex5_launch.oar
|
|
|
|
+#
|
|
|
|
+# Note: les directives OAR commencent par #OAR pour les mettre en commentaires
|
|
|
|
+# il faut utiliser un double #
|
|
|
|
+################################################################################
|
|
|
|
+
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+# chargement du module matlab (mise à jour du PATH)
|
|
|
|
+#
|
|
|
|
+# (ajout avril 2017: mise en place de lmod et easybuild sur
|
|
|
|
+# la plateforme)
|
|
|
|
+# http://lmod.readthedocs.io/en/latest/010_user.html
|
|
|
|
+# http://easybuild.readthedocs.io/en/latest/Introduction.html
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+source /nfs/opt/env/env.sh
|
|
|
|
+module load matlab
|
|
|
|
+
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+# Les directives OAR
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+# donner un nom au job
|
|
|
|
+#OAR -n pi_checkpoint_ex5
|
|
|
|
+
|
|
|
|
+# les ressources
|
|
|
|
+
|
|
|
|
+#OAR -l /nodes=1/core=1,walltime=24:00:00
|
|
|
|
+
|
|
|
|
+# la file de soumission
|
|
|
|
+#OAR -q besteffort
|
|
|
|
+
|
|
|
|
+## À faire.
|
|
|
|
+##OAR -t idempotent
|
|
|
|
+
|
|
|
|
+# notification par mail ou script
|
|
|
|
+#OAR --notify mail:marion@lmpa.univ-littoral.fr
|
|
|
|
+##OAR --notify exec:/chemin/vers/mon/script arguments
|
|
|
|
+
|
|
|
|
+# affiner la selection des ressources avec les propriétés
|
|
|
|
+# voir sortie de la commande oarnodes sur le frontal pour les connaître
|
|
|
|
+# syntax à la SQL
|
|
|
|
+## ex:novembre 2016: matlab était installé que sur orval 4 et 5
|
|
|
|
+##OAR -p network_address = 'orval05' or network_address = 'orval04'
|
|
|
|
+##OAR -p nodemodel = 'Dell_R820' and disktype = 'sas'
|
|
|
|
+
|
|
|
|
+# redirection des sorties standard stdout et stderr
|
|
|
|
+# par défaut redirection vers OAR.%jobid%.stdout et OAR.%jobid%.stderr
|
|
|
|
+# dans le répertoire courant
|
|
|
|
+# A mettre dans scratch sous votre arborescence
|
|
|
|
+#OAR -O /scratch/lmpa/pmarion/%jobid%.out
|
|
|
|
+#OAR -E /scratch/lmpa/pmarion/%jobid%.err
|
|
|
|
+
|
|
|
|
+# IMPORTANT (ajout déc.2016):
|
|
|
|
+# inclure dans les ressources demandées un jeton Matlab de sorte
|
|
|
|
+# que le script sera lancé que s'il y a bien un jeton de libre
|
|
|
|
+#OAR -t token:matlab=1
|
|
|
|
+
|
|
|
|
+# mode besteffort et restart automatique
|
|
|
|
+##OAR -t besteffort
|
|
|
|
+##OAR -t idempotent
|
|
|
|
+
|
|
|
|
+PROG=pi_checkpoint_ex5.m
|
|
|
|
+
|
|
|
|
+GROUP=$(id -gn $OAR_USER)
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+# Création du répertoire temporaire local dans scratch
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+SCRATCHDIR=/scratch/$GROUP/$OAR_USER/$OAR_JOB_NAME.$OAR_JOBID
|
|
|
|
+[ ! -d $SCRATCHDIR ] && mkdir $SCRATCHDIR
|
|
|
|
+
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+# Recopie du programme et des données en local
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+cd $SCRATCHDIR
|
|
|
|
+# programme
|
|
|
|
+cp $OAR_WORKDIR/$PROG .
|
|
|
|
+
|
|
|
|
+# recopie des données depuis les espaces Data et/ou Home
|
|
|
|
+# cp /nfs/home/labo/user/chemin/vers/mes/donnees .
|
|
|
|
+# cp /nfs/data/labo/user/chemin/vers/mes/autres/donnees .
|
|
|
|
+# ici il n'y en a pas sauf si un premier run avorté a eu lieu,
|
|
|
|
+# recopie du checkpoint "check.mat" :
|
|
|
|
+
|
|
|
|
+if [ -e $OAR_WORKDIR/check.mat ] ; then
|
|
|
|
+ cp $OAR_WORKDIR/check.mat .
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+# Execution du programme depuis l'espace scratch
|
|
|
|
+#
|
|
|
|
+# NB: options de Matlab en mode batch: -nodesktop -nodisplay -nosplash
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+#
|
|
|
|
+
|
|
|
|
+matlab -nodesktop -nodisplay -nosplash < $PROG > matlab.out
|
|
|
|
+
|
|
|
|
+mv $OAR_STDOUT .
|
|
|
|
+mv $OAR_STDERR .
|
|
|
|
+
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+# suppression du programme et des données utilisées en entrée
|
|
|
|
+# avant transfert
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+ rm ./$PROG
|
|
|
|
+#rm mes_donnees_copiees_de home
|
|
|
|
+#rm mes_donnees_copiees_de_data
|
|
|
|
+
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+# transfert des résultats vers Home ou Data
|
|
|
|
+# ici vers le répertoire Home du programme
|
|
|
|
+#-----------------------------------------------------------
|
|
|
|
+cd ..
|
|
|
|
+cp -pR $SCRATCHDIR $OAR_WORKDIR
|
|
|
|
+rm -rf $SCRATCHDIR
|