【问题标题】:Run jobs with SLURM on two nodes on IDLE status在 IDLE 状态的两个节点上使用 SLURM 运行作业
【发布时间】:2022-01-13 16:38:03
【问题描述】:

我是 slurm 的新手,我有两个处于空闲状态的节点,但我的作业只在其中一个节点上运行,主节点 (node01),而我不明白为什么第二个节点 (node02) 不运行工作。

我为要提交的 500 个作业创建了一个 while 循环

while read f1 f2; do sbatch myscript.sh ${f1} ${f2}; done < list.txt

在脚本“myscript.sh”的标题上

#SBATCH --job-name=test_jobs
#SBATCH --nodes=2
#SBATCH --cpus-per-task=3
#SBATCH --mem=1G
#SBATCH --time=00:03:00
#SBATCH --output=sslurm_%j.log

查看 slurm.conf 文件

# Node
NodeName=node01 CPUs=80 Boards=1 SocketsPerBoard=2 CoresPerSocket=20 ThreadsPerCore=2 RealMemory=515619
NodeName=node02 CPUs=80 Boards=1 SocketsPerBoard=2 CoresPerSocket=20 ThreadsPerCore=2 RealMemory=515619
# Partition
PartitionName=base Nodes=node01,node02 Default=Yes MaxTime=7-00:00:00 Priority=1 State=U

node02 应该从 node01 读取脚本,因为我创建了一个 NFS 共享文件夹来保存脚本。在脚本中报告了要使用的工具的路径,这些工具仅在 node01 上(一些位于 /usr/bin/ 和其他从我创建的文件夹中)。我还应该共享输入文件和工具所在的文件夹吗?

这里有什么问题?以及如何在日志文件中打印哪个节点运行每个作业? 谢谢!

【问题讨论】:

    标签: nodes slurm


    【解决方案1】:

    通过在提交脚本中请求#SBATCH --nodes=2,您请求为每个作业分配两个节点。我猜你的程序是多线程的,不能同时在两个节点上运行,所以 node02 实际上什么也没做,但它仍然与 node01 一起分配给每个作业。

    所以你应该删除那行#SBATCH --nodes=2

    此外,您需要确保在作业之间启用节点共享,因为节点提供 80 个 CPU,但作业需要 3 个。SelectType 应该是 select/cons_resselect/cons_tres

    我还应该共享输入文件和工具所在的文件夹吗?

    是的。 Slurm 不会为您复制文件,它假定它们在计算节点上可用。

    【讨论】:

    • 您好 damienfrancois,在 slurm.conf 文件中我已经有了:SelectType=select/cons_res SelectTypeParameters=CR_CPU_Memory
    • 我还删除了“--nodes=2”,我可以提交,但只有其中一些在主节点上运行,而另一些则立即死亡。如果我添加 --nodelist=node01,node02 ,所有运行,但只使用 node01。
    • 抱歉,现在我阅读了最后一部分“是的。Slurm 不会为您复制文件,它假定它们在计算节点上可用。” ...这是合乎逻辑的,我也会分享主题。
    猜你喜欢
    • 2020-09-27
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    相关资源
    最近更新 更多