Berkeley Lab チェックポイント (BLCR) スキームを使用してトルク ジョブ スケジューラによって処理されているジョブをチェックポイントしようとしていますが、コンパイル時に実行可能ファイルが静的にリンクされていると思われるため、cr_run 'my_exec' を試行するとエラーがスローされます。送信スクリプトは次のようになります (簡略化された疑似バージョン):
#!/bin/bash
#PBS -q workq
#PBS -l nodes=1:ppn=4
#PBS -l pmem=1gb,pvmem=2gb
#PBS -l walltime=30:00:00
#PBS -o out.log
#PBS -N jobname
#PBS -j oe
cd $PBS_O_WORKDIR
NNODES=$(uniq $PBS_NODEFILE | wc -l)
NP=$(wc -l $PBS_NODEFILE | awk '{print $1}')
echo PBS_NODEFILE is $PBS_NODEFILE
echo NNODES is $NNODES
cat $PBS_NODEFILE
cr_run 'executable' infile.inp > outfile.out &
## store process ID as variable and sleep 29 hours, then checkpoint
BGPID=$!
sleep 104400
cr_checkpoint -p $BGPID -f checkFile.checkpoint --term
私は動的にリンクされたバイナリ (主に自分で書いたコードから構築された実行可能ファイル) を使用してチェックポイント ジョブを成功させたので、これを行う方法は既に知っています。問題は、実行しようとしている実行可能ファイルが事前にコンパイルされていて、ソース コードがないか、またはこれが問題にならないことです。
いくつかのアドバイスを提供しているように思われるドキュメントをここ(4.2 を参照) で見つけましたが、ここで提案を解読してテストする前に、動的ではない実行可能ファイルから実行されるチェックポイント ジョブの経験があるかどうかを確認する価値があると思いました。コンパイル時にリンクされます。
補足として、コードには内部チェックポイントがありません。また、29 時間スリープするよりも丁寧なチェックポイントの方法を使用しています。これを含めたのは、スクリプトが煩雑にならず、読みやすくするためです。