我想运行一个程序来运行并创建一个检查点文件。然后我想运行几个从该检查点开始的变体配置。
例如,如果我运行:
sbatch -n 1 -t 12:00:00 --mem=16g program.sh
并且
program.sh
看起来像这样:
#!/bin/sh
./set_checkpoint
sbatch -n 1 -t 12:00:00 --mem=16g cpt_restore_config1.sh
sbatch -n 1 -t 12:00:00 --mem=16g cpt_restore_config2.sh
sbatch -n 1 -t 12:00:00 --mem=16g cpt_restore_config3.sh
sbatch -n 1 -t 12:00:00 --mem=16g cpt_restore_config4.sh
这样能达到预期的效果吗?
是的。如果您将 bash 脚本作为 slurm 作业执行,则所有 bash 命令都是合法的 - 包括提交新的 slurm 作业。
根据评论,似乎 sbatch 由于某种原因不能保证递归工作。我最近遇到了类似的问题,我可以通过从启动主脚本的同一个 shell 运行主脚本来绕过该限制。在您的情况下,这意味着使用
source program.sh
而不是 sbatch program.sh
。