1
我试图检查点的工作正在使用伯克利实验室检查点(BLCR)方案的扭矩作业调度处理,我有尝试cr_run“my_exec”时引发的错误,因为我相信,可执行在编译时静态链接。提交脚本的样子(简化了,伪版):扭矩BLCR检查点与静态链接的可执行文件
#!/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
我已经成功设置检查点使用其进行动态链接的二进制文件(主要是可执行文件从我写我自己的代码内置)的工作,所以我已经知道该怎么做这个。问题是,我试图运行的可执行文件是预编译的,并且我没有源代码或者这不会是一个问题。
我发现了文档here(见4.2)似乎提供了一些建议,但在尝试解密和测试这里的建议之前,我认为值得看看是否有人对从可执行文件运行的检查点工作有经验在编译时不会动态链接。
作为附注,代码没有内部检查点。此外,我们正在使用更有礼貌的检查点方式,而不是睡觉29小时,我只是将其包含在内,以避免混淆脚本并使其更具可读性。
你有没有在静态链接的代码做这个发现错误?我不认为这会影响事情。 – dbeer
动态链接代码不会发生错误。查看上面的链接以查看在编译时静态链接代码时要执行的操作的解释。问题是我没有源代码,所以我无法控制可执行文件的链接方式。这是整个问题。 – MaxGraves
我的错误 - 我以为你说你在重新启动时遇到了问题,但是你正在谈论使用BLCR进行初始编译。代码是由本地编译还是由供应商提供的?如果其本地,也许你可以与网站管理员合作,以获得BLCR兼容的静态链接副本。如果它来自供应商,您可能需要将供应商推向相同的东西,但可能会更困难。 – dbeer