Blcr (Berkeley library checkpoint restart)

Cette librairie permet d'effectuer en cours de calcul des sauvegardes, pour ensuite repartir d'un calcul à partir de cet état.
Voir https://ftg.lbl.gov/projects/CheckpointRestart.

module associé :

module add blcr

Le code ainsi que la documentation associée se trouve sous /opt/sgi/blcr

Utilisation code séquentiel

L'utilisation de blcr se fait par le biais de différentes commandes :
- cr_run : pour lancer un code avec blcr
- cr_checkpoint : pour effectuer une sauvegarde
- cr_restart : pour relancer un calcul à partir d'une sauvegarde

Il faut récupérer le PID du code pour pouvoir effectuer la sauvegarde

exemple test :

[homer@thor ~]$ cr_run ./code > code.out 2>&1 & # lancement du code avec blcr
[homer@thor ~]$ MYPID=`ps -ef | grep "./code"| grep -v grep | awk '{print $2}'` # recupération du PID associé au processus
[homer@thor ~]$ cr_checkpoint -f checkpoint_code.1.cr $MYPID # ecriture du fichier de sauvegarde nommé  checkpoint_code.1.cr
[homer@thor ~]$ cr_restart --no-restore-pid checkpoint_code.1.cr >> code.out 2>&1 & # restart du code à partir du fichier de sauvegarde 

interaction avec MPT

The SGI Message Passing Toolkit (MPT) supports the Berkeley Lab Checkpoint/Restart (BLCR) checkpoint/restart implementation. This implementation allows applications to periodically save a copy of their state. Applications can resume from that point if the application crashes or the job is aborted to free resources for higher priority jobs.

The following are the implementation's limitations:

  • BLCR does not checkpoint the state of any data files that the application might be using.
  • When using checkpoint/restart, MPI does not support certain features, including spawning and one-sided MPI.
  • Checkpoint files are often very large and require significant disk bandwidth to create in a timely manner.

Usage

  • Une fois que le code est compilé avec MPT, le code doit être lancé avec l'option -cpr
#...
#PBS définition des ressources PBS
#...

# activation des modules nécessaires pour le code et ajout du module blcr
# module add ...
module add blcr

# lancement du code avec -cpr
mpiexec_mpt   -cpr  mon_code  > outputfile.log.$PBS_JOBID 2>&1

[homer@thor ~]$  qsub myscript_chkpt.pbs
  • Utilisation du script /sw/tools/bin/run_chkpt ; le script effectue le checkpoint et sauvegarde l'état du job dans des fichiers (fichier avec l'extension .cps)
[homer@thor ~]$  run_chkpt --job=679675

run_chkpt --help pour plus d'informations ;

  • Pour repartir de cet instant, il faut créer un nouveau script (avec les même ressources cpu) :
#...
#PBS définition des mêmes ressources PBS
#...

# activation des modules nécessaires pour le code et ajout du module blcr
# module add ...
module add blcr

# lancement du code avec 'restart' 
RESTART_FILE=restart_file.cps
mpiexec_mpt -v  -cpr mpt_restart ${RESTART_FILE} > ${RESTART_FILE%.cps}.log.$PBS_JOBID 2>&1
[homer@thor ~]$  qsub myscript_restart.pbs