gpt4 book ai didi

python - SLURM 脚本中的 While 循环

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:22 24 4
gpt4 key购买 nike

我第一次使用集群进行计算,因此也是第一次使用 SLURM 脚本。

我正在迭代我在数字列表上使用的 python 代码。我之前在自己的机器上使用 bash 脚本中的简单 while 循环完成了此操作。

我认为这可以相当直接地转换为 SLURM 脚本。然而,在执行时,仅读取并执行列表的第一个数字,之后执行停止。因此,其余约 200 个数字将被忽略。有什么想法可能会导致这种情况吗?

这是SLURM脚本,供引用:

#!/bin/bash -l

#SBATCH -o ./job.out.%j
#SBATCH -e ./job.err.%j
#SBATCH -D ./
#SBATCH -J NAME
#SBATCH --nodes=2
#SBATCH --tasks-per-node=40
#SBATCH --cpus-per-task=1
#SBATCH --time=06:59:00

module load anaconda

while read IDX; do
echo $PWD
cd "model_"$IDX
srun python ../mcmc.py
cd ".."
done <sample.txt

最佳答案

如果“model_$IDX”不存在,则以下 cd .. 将中断以下迭代。

一个简单的解决方法是

while read IDX; do
echo $PWD
if cd "model_"$IDX; then
srun python ../mcmc.py
cd ".."
fi
done <sample.txt

如果IDX是正整数并且运行之间没有依赖性,则更SLURM'ish的方法是使用Job Array (只要您的系统限制允许您提交足够大的作业数组以满足您的需要)

你的工作脚本是

#!/bin/bash -l

#SBATCH -o ./job.out.%j
#SBATCH -e ./job.err.%j
#SBATCH -D ./
#SBATCH -J NAME
#SBATCH --nodes=2
#SBATCH --tasks-per-node=40
#SBATCH --cpus-per-task=1
#SBATCH --time=06:59:00

module load anaconda

echo $PWD
cd "model_"$SLURM_ARRAY_TASK_ID
srun python ../mcmc.py

然后使用解析sample.txt的外部脚本,并创建一串逗号分隔的索引和

sbatch --array=<comma separated list of indexes> <slurm script>

关于python - SLURM 脚本中的 While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47798179/

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