gpt4 book ai didi

bash - 在运行期间更改发送到 slurm 中的 sbatch 的 bash 脚本是个坏主意吗?

转载 作者:行者123 更新时间:2023-11-29 08:54:42 26 4
gpt4 key购买 nike

我想通过 sbatch_run.sh 脚本使用不同 参数多次运行 python 脚本 main.py,如下所示:

#!/bin/bash
#SBATCH --job-name=sbatch_run
#SBATCH --array=1-1000
#SBATCH --exclude=node047

arg1=10 #arg to be change during runs
arg2=12 #arg to be change during runs
python main.py $arg1 $arg2

参数在 sbatch 运行的 bash 文件中编码。我担心如果我多次一个接一个运行 sbatch_run.sh 但在每次运行期间更改 arg1 和 arg2 的值,这可能会导致我的运行出错.例如,如果我这样做:

sbatch sbatch_run.sh # with arg1=10 and arg2=12

然后在我更改 sbatch_run.sh 但再次运行文件后立即,如下所示:

sbatch sbatch_run.sh # with arg1=69 and arg2=666

会将我的运行设置为使用最后一个运行(即 arg1=69arg2=666)而不是每个运行都有自己的参数。

我确信如果我在 main.py 中对参数进行硬编码,然后运行相同的 sbatch 脚本但更改 main.py 它将运行最后一个。我想知道如果我更改 sbatch_run.sh 脚本是否也是这种情况。


如你所知,我确实尝试过这个实验,运行 1000 个脚本,然后一些脚本进入队列并发出休眠命令,然后更改 sbatch_run.sh。这似乎并没有改变我的运行方式,但是,如果我错了,这太重要了,不能偶然出错,我想确保我也问过。

为了记录我跑了:

#!/bin/bash
#SBATCH --job-name=ECHO
#SBATCH --array=1-1000
#SBATCH --exclude=node047

sleep 15
echo helloworld
echo 5

然后将 echo 更改为 echo 10 或 echo byebyeworld。

最佳答案

当 sbatch 运行时,Slurm 将提交脚本复制到其内部数据库;您可以通过以下实验说服自己:

$ cat submit.sh
#!/bin/bash
#SBATCH --hold
echo helloworld

--hold 用于确保作业不会启动。提交:

$ sbatch submit.sh

然后修改提交脚本:

$ sed -i 's/hello/bye/' submit.sh
$ cat submit.sh
#!/bin/bash
#SBATCH --hold
echo byeworld

现在使用 control show job 查看 Slurm 计划运行的脚本:

$ scontrol show -ddd job YOURJOBID
JobId=******* JobName=submit.sh
[...]
BatchScript=
#!/bin/bash
#SBATCH --hold
echo helloworld
[...]

尽管原始脚本发生了变化,但它并没有发生变化。

[编辑] Slurm 的最新版本使用 scontrol write batch_script - 而不是 scontrol show -dd job 来显示提交脚本。

关于bash - 在运行期间更改发送到 slurm 中的 sbatch 的 bash 脚本是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38778844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com