Ph. Marion f0767a54ae corrections README.md oar_array 6 years ago
..
Makefile 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago
README.md f0767a54ae corrections README.md oar_array 6 years ago
gc_array.oar 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago
gc_input.txt 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago
gc_matlab.sh 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago
gc_postraitement.sh 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago
gradientconj.m 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago
pi.c 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago
pi_array.oar 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago
pi_input.txt 3dc6c56041 OAR_array : 2ième exemple matlab 6 years ago

README.md

Usage «avancé» OAR : array

La «bonne pratique» pour lancer massivement, en parallèle, le même programme avec des paramètres différents : **utiliser l'option --array-param-file parametres.txt d'OAR **. Cette option lance un «tableau de tâches» chacune indépendantes les unes des autres

  • développer le programme de tel sorte qu'il prenne les paramètres en argument : ./programme.exe arg1 arg2 arg3...
  • générer un fichier ascii qui contient l'ensemble des paramètres à tester
    • arg11 arg12 arg13 ..
    • arg21 arg22 arg23 ..

Note: ce fichier peut contenir des centaines, des milliers de lignes

  • lancer les expériences via un script OAR:
    • avec l'option #OAR --array-param-file parametres.txt
    • dans la queue besteffort
    • avec l'option idempotent

Rappel: en besteffort, les ressources sont illimitées mais les jobs sont non prioritaires (ils peuvent être supprimés sans préavis si des jobs de priorité supérieure sont lancés). À noter dans ce cas que le strict nécessaire aux jobs prioritaires est «libéré»: ce n'est pas le tableau de tâches qui est intégralement supprimé. De plus, l'option idempotent permet de relancer automatiquement toutes les expériences (qui auraient été tuées par des jobs prioritaires)

exemple 1 : pi_array.oar

le programme pi.exe calcule une approximation de pi par l'intégration de f(x)=4/(1+x^2) sur [0;1]. Le nombre d'intervalles est passé en argument (regroupé dans le fichier pi_input.txt)

  • make (compile le programme pi.exe)
  • oarsub -S ./pi_array.oar

exemple 2 (matlab): gradientconj.m

Le programme résout un système linéaire par la méthode itérative du gradient conjugué. Le script matlab a été tranformé en fonction: gradientconj(n,tolerance,maxiter)

  • oarsub -S ./gc_array.oar

note: contrairement à l'exemple 1 (ci-dessus) et à l'exemple gradient conjugué des tutoriaux, le script bash OAR ne peut accepter la syntaxe de commande:

matlab -nodisplay -nodesktop -nojvm -r 'testgradientconj("$@");exit'"

L'astuce employée ici est de passer par autre script de lancement intermédiaire: gc_matlab.sh

description des fichiers

  • gc_array.oar : le script OAR à lancer (oarsub -S ./gc_array.oar)
  • gc_matlab.sh : réordonne les paramètres et lance la commande matlab proprement dite
  • gradientconj.m : prog. matlab
  • gc_input.txt : paramètres des différents jobs ( n, tol, maxiter )
    • 1000 1e-5 1000
    • 2000 1e-7 1500
    • 6000 1e-6 6000
    • etc.
  • gc_postraitement.sh (optionnel): génère un fichier tableau (csv) gc_bilan.csv à partir des fichiers générés par chaque job

note: usage de jetons

  • comme sur un poste personnel, plusieurs sessions matlab ne «consomme» qu'un seul jeton
  • si le fichier gc_input.txt est suffisamment long ( > nombre max de cœurs du nœud utilisé ) d'autres nœuds seront utilisés , ainsi que d'autres jetons (mais 1 seul jeton/nœud)