在 SLURM openmpi 中绑定比 cpus 错误更多的进程
Binding more processes than cpus error in SLURM openmpi
我正在尝试 运行 一个使用显式消息在 SLURM 上的节点之间传递的作业(即不只是 运行 宁并行作业),但我收到重复出现的错误“已发出请求绑定到那个会导致在资源上绑定比 cpus 更多的进程”。简而言之,我的代码需要跨 128 个节点发送一个参数数组,计算这些参数的可能性,并将这些可能性值的总和收集回根节点。使用以下 sbatch 文件执行代码时出现错误:
#!/bin/bash
#SBATCH --job-name=linesearch
#SBATCH --output=ls_%j.txt
#SBATCH --nodes=16
#SBATCH --ntasks-per-node=16
#SBATCH --partition=broadwl
#SBATCH --mem-per-cpu=2000
#SBATCH --time=18:00:00
# Load the default OpenMPI module.
module load openmpi
mpiexec -N 8 ./linesearch
我认为使用 -N 8
会将每个节点 8 个进程显式分配给 16 个 --ntasks-per-node
。我认为使用这种计算机处理效率低下的方法 space 会在响应不同的溢出线程后减少此错误,但它没有解决问题。
完整的错误信息如下:
A request was made to bind to that would result in binding more
processes than cpus on a resource:
Bind to: NONE:IF-SUPPORTED
Node: XXXXXX
#processes: 4
#cpus: 3
You can override this protection by adding the "overload-allowed"
option to your binding directive.
我正在执行的进程可能会占用大量内存,因此我不想一定要使用重载覆盖,以免作业在用尽分配后终止。
请注意,我正在加载模块 openmpi v2.0.1 [已停用]。但是,将 sbatch 文件更改为仅使用 -np 128
任务绑定到套接字解决了这个问题
批处理文件:
#!/bin/bash
#SBATCH --job-name=linesearch
#SBATCH --output=ls_%j.txt
#SBATCH --nodes=16
#SBATCH --ntasks=128
#SBATCH --partition=broadwl
#SBATCH --mem-per-cpu=2000
#SBATCH --time=18:00:00
# Load the default OpenMPI module.
module load openmpi
mpiexec -np 128 ./execs/linesearch
另一种解决方案是在 mpiexec
语句中使用 --bind-to core --map-by core
将每个进程绑定到一个核心
我正在尝试 运行 一个使用显式消息在 SLURM 上的节点之间传递的作业(即不只是 运行 宁并行作业),但我收到重复出现的错误“已发出请求绑定到那个会导致在资源上绑定比 cpus 更多的进程”。简而言之,我的代码需要跨 128 个节点发送一个参数数组,计算这些参数的可能性,并将这些可能性值的总和收集回根节点。使用以下 sbatch 文件执行代码时出现错误:
#!/bin/bash
#SBATCH --job-name=linesearch
#SBATCH --output=ls_%j.txt
#SBATCH --nodes=16
#SBATCH --ntasks-per-node=16
#SBATCH --partition=broadwl
#SBATCH --mem-per-cpu=2000
#SBATCH --time=18:00:00
# Load the default OpenMPI module.
module load openmpi
mpiexec -N 8 ./linesearch
我认为使用 -N 8
会将每个节点 8 个进程显式分配给 16 个 --ntasks-per-node
。我认为使用这种计算机处理效率低下的方法 space 会在响应不同的溢出线程后减少此错误,但它没有解决问题。
完整的错误信息如下:
A request was made to bind to that would result in binding more
processes than cpus on a resource:
Bind to: NONE:IF-SUPPORTED
Node: XXXXXX
#processes: 4
#cpus: 3
You can override this protection by adding the "overload-allowed"
option to your binding directive.
我正在执行的进程可能会占用大量内存,因此我不想一定要使用重载覆盖,以免作业在用尽分配后终止。
请注意,我正在加载模块 openmpi v2.0.1 [已停用]。但是,将 sbatch 文件更改为仅使用 -np 128
任务绑定到套接字解决了这个问题
批处理文件:
#!/bin/bash
#SBATCH --job-name=linesearch
#SBATCH --output=ls_%j.txt
#SBATCH --nodes=16
#SBATCH --ntasks=128
#SBATCH --partition=broadwl
#SBATCH --mem-per-cpu=2000
#SBATCH --time=18:00:00
# Load the default OpenMPI module.
module load openmpi
mpiexec -np 128 ./execs/linesearch
另一种解决方案是在 mpiexec
语句中使用 --bind-to core --map-by core
将每个进程绑定到一个核心