Différences entre versions de « PBS et matlab »

De POLR
Sauter à la navigation Sauter à la recherche
Ligne 8 : Ligne 8 :
  
  
Cette commande lancera '''Matlab''' et celui-ci exécutera automatiquement le code contenu dans le script ''<fichier_matlab>''. Les messages résultant de l’exécution seront écrits dans le fichier ''<fichier_log>''. L'utilisation < /dev/null n'est pas obligatoire mais empêche MATALB de faire des boucles d'erreurs à l'infini.  
+
Cette commande lancera '''Matlab''' et celui-ci exécutera automatiquement le code contenu dans le script ''<fichier_matlab>''. Les messages résultant de l’exécution seront écrits dans le fichier ''<fichier_log>''. L'utilisation '''< /dev/null''' n'est pas obligatoire mais empêche MATALB de faire des boucles d'erreurs à l'infini.
 +
 
 +
'''IMPORTANT :''' Pour le gestionnaire de licences (FLEXLM), l'utilisation de '''< /dev/null''' a pour conséquence de rendre de votre tâche Matlab '''interactive''' à ses yeux. '''Votre licence vous sera donc automatiquement retirée au bout de quatre heures, ce qui mettra fin à l'exécution de votre session Matlab'''.
  
  

Version du 1 novembre 2018 à 13:57

Exécution en lot d'une tâche Matlab

Il est possible de lancer l'exécution automatique d'un script lors du lancement de Matlab en utilisant la syntaxe suivante:

matlab -nojvm -nosplash -nodesktop -nodisplay -logfile <fichier_log>.log -r "try; run('<fichier_matlab>'); catch; end; quit " < /dev/null


Cette commande lancera Matlab et celui-ci exécutera automatiquement le code contenu dans le script <fichier_matlab>. Les messages résultant de l’exécution seront écrits dans le fichier <fichier_log>. L'utilisation < /dev/null n'est pas obligatoire mais empêche MATALB de faire des boucles d'erreurs à l'infini.

IMPORTANT : Pour le gestionnaire de licences (FLEXLM), l'utilisation de < /dev/null a pour conséquence de rendre de votre tâche Matlab interactive à ses yeux. Votre licence vous sera donc automatiquement retirée au bout de quatre heures, ce qui mettra fin à l'exécution de votre session Matlab.


Exemple:

matlab -nojvm -nosplash -nodesktop -nodisplay -logfile produire_anim.log -r "try; run('produire_anim.m'); catch; end; quit " < /dev/null


Grâce à cette approche, il devient alors facile de soumettre une ou plusieurs tâches Matlab pour exécution sur un nœud de calcul de la grappe mingan en utilisant un script PBS pour lancer le tout.

#!/bin/bash
###################################################
#
#Soumettre un ensemble de taches matlab sur un noeud de calcul
#
###################################################
#PBS -l nodes=1:ppn=5
#PBS -l mem=50gb
#PBS -N tache_matlab
#PBS -l walltime=05:00:00
#PBS -j oe

cd $PBS_O_WORKDIR
module load matlab2015b

#On lance 5 taches en arrière-plan (... &)
matlab -nojvm -nosplash -nodesktop -nodisplay -logfile produire_anim1.log -r "try; run('produire_anim1.m'); catch; end; quit" < /dev/null &
matlab -nojvm -nosplash -nodesktop -nodisplay -logfile produire_anim2.log -r "try; run('produire_anim2.m'); catch; end; quit" < /dev/null &
matlab -nojvm -nosplash -nodesktop -nodisplay -logfile produire_anim3.log -r "try; run('produire_anim3.m'); catch; end; quit" < /dev/null &
matlab -nojvm -nosplash -nodesktop -nodisplay -logfile produire_anim4.log -r "try; run('produire_anim4.m'); catch; end; quit" < /dev/null &
matlab -nojvm -nosplash -nodesktop -nodisplay -logfile produire_anim5.log -r "try; run('produire_anim5.m'); catch; end; quit" < /dev/null &

#On attend que toutes les taches se terminent
wait




NOTE

Lorsque la tâche que vous désirez soumettre via qsub utilise Matlab, vous devez vous assurer que vous n'avez pas une session Matlab déjà active sur un nœud, que ce soit une session interactive sur compute-0-2 ou compute-0-3 ou une tâche en lot sur un autre nœud de calcul. Cette restriction découle du fait que nous n'avons que 10 licences Matlab et que ces licences sont attribuées de la façon suivante:

  • une licence par utilisateur, par nœud de calcul ;
  • sur un même nœud, un utilisateur peut lancer plusieurs instances de Matlab en ne consommant qu'une seule licence .