SLURM sbatch 是不是会自动跨节点复制用户脚本?

Posted

技术标签:

【中文标题】SLURM sbatch 是不是会自动跨节点复制用户脚本?【英文标题】:Does SLURM sbatch Automatically Copy User Script Across Nodes?SLURM sbatch 是否会自动跨节点复制用户脚本? 【发布时间】:2020-04-17 16:36:42 【问题描述】:

SLURM(特别是 sbatch)是否应该自动将用户脚本(而不是作业配置脚本)复制到集群的计算节点以执行?从我的登录节点执行 sbatch 文件后,输出文件会在我的一个计算节点上创建,但包含以下内容:

ERROR: could not open file /home/pi/slurm.jl
Stacktrace:
 [1] include at ./boot.jl:328 [inlined]
 [2] include_relative(::Module, ::String) at ./loading.jl:1105
 [3] include(::Module, ::String) at ./Base.jl:31
 [4] exec_options(::Base.JLOptions) at ./client.jl:287
 [5] _start() at ./client.jl:460

我正在使用sbatch julia.sbatch 运行批处理脚本。

julia.sbatch:

#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks=4
#SBATCH --time=00:15:00
#SBATCH --output=julia.out
#SBATCH --job-name=julia-job

julia slurm.jl

或者脚本 (slurm.jl) 是否应该位于所有节点都可以访问的共享存储上?

【问题讨论】:

【参考方案1】:

Slurm 不会将提交脚本以外的文件复制到计算节点。来自Quick Start User Guide:

Slurm 不会自动将可执行文件或数据文件迁移到分配给作业的节点。文件必须存在于本地磁盘或某些全局文件系统(例如 NFS 或 Lustre)中。

在大多数集群上,/home 目录是在每个登录和计算节点上共享的 NFS 文件系统。

【讨论】:

【参考方案2】:

您可以在脚本中使用sbcast 将文件复制到节点。

#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks=4
#SBATCH --time=00:15:00
#SBATCH --output=julia.out
#SBATCH --job-name=julia-job
sbcast slurm.jl slurm.jl
julia slurm.jl

【讨论】:

以上是关于SLURM sbatch 是不是会自动跨节点复制用户脚本?的主要内容,如果未能解决你的问题,请参考以下文章

解决 SLURM “sbatch:错误:批处理作业提交失败:请求的节点配置不可用”错误

如何使用 Slurm 在多个节点上发送循环?

SLURM `srun` vs `sbatch` 及其参数

使用 SLURM 上的所有 CPU

HPC 集群:选择 SLURM sbatch 中的 CPU 和线程数

如何在节点上平均分配 slurm 任务?