#!/bin/bash #------------------- CHECKPOINT DMTCP OpenMP ex4 --------------------------- # # Programme test de dmtcp dans le cas Multithreads (OpenMP) # - 20 multiplications matricielles (2000x2000) # - avec 8 threads le temps est un peu plus de 4 minutes # - le programme est lancer avec l'option -i 180s # de dmtcp (un checkpoint au bout de 3mn) # - comme dans l'exemple checkpoint-dmtcp1.oar, le walltime du script # OAR est "trop court" : il ne finit pas son execution # - => il faut relancer le script une deuxième fois (manuellement) # le (ce) script qui recharger le script dmtcp_restart_script.sh # commande: oarsub -S ./checkpoint-dmtcp-openmp4.oar # infos: http://dmtcp.sourceforge.net/ # IMPORTANT : la reprise de job se fait ici sur le même noeud, # merci de consulter la charge sur cluster (noeud libre) sur # https://www-calculco.univ-littoral.fr/outils_visu/drawgantt/ # et EDITER la ligne: OAR -p network_address = 'orval06' # (un peu plus bas) #-------------- paramètres OAR--------------------------- # walltime de 6mn ( donc trop court pour le prog/timer de 10mn) #OAR -l core=8,walltime=00:3:30 #OAR -n dmtcp_ex4 # Les fichiers de sortie sans parametres $OAR_JOBID # (=> les jobs successifs ecrivent dans les memes fichiers) #OAR -O OAR-ckpt-dmtcp4.out #OAR -E OAR-ckpt-dmtcp4.err #OAR -q default # les tests sont mis au point sur orval06. # Note: une reprise de checkpoint sur une autre machine nécessite # l'édition du script dmtcp_restart_script.sh # A EDITER en fonction de la charge: https://www-calculco.univ-littoral.fr/outils_visu/drawgantt/ #OAR -p network_address = 'orval01' # optionnel ##OAR -t besteffort # chargement du modeul dmtcp source /nfs/opt/env/env.sh > /dev/null 2>&1 module load dmtcp > /dev/null 2>&1 #---------- la tâche à exécuter ------------------------ # compilation ( ) gfortran -fopenmp -O3 timing-matmul2000.f90 -o matmul2000 #----------- pré-traitement ----------------------------- # DWTFYW ! echo "Debut du jobs ou restart ?" # si c'est une reprise if [ -f dmtcp_restart_script.sh ]; then echo " -> reprise du job " # piste (changement de nœuds): sed -i '/ancien_noeud/nouveau_noeud/' dmtcp_restart_script.sh # (-> testé -OK- a la mano, à scripter!) ./dmtcp_restart_script.sh else # 1er démarrage avec ordre de checkpoint toutes les 2mn 50 (walltime 3mn) # Rq: sur un vrai exemple, prendre plus de marge! echo " -> Debut du jobs" dmtcp_launch -i 180 ./matmul2000 # pas d'eperluette! (&) sinon le script OAR checkpoint supprimes cf plus bas fi #--------------------------------------------------------- # fin du programme: postraitement #--------------------------------------------------------- # DWTFYW! echo "---post treatement---" # suppression des ckpt (ménage) echo "fin effective du programme, suppression des checkpoints" rm ckpt_*.dmtcp dmtcp_restart_script* exit $?