mpirun with slurm:如何在单个CPU上运行多个进程

mpirun with slurm:如何在单个CPU上运行多个进程,mpi,cpu,slurm,Mpi,Cpu,Slurm,我想编写slurm批处理(sbatch)来运行几个mpi应用程序。因此,我希望能够运行这样的东西 salloc --nodes=1 mpirun -n 6 hostname 但我得到的信息是: 系统中没有足够的可用插槽来满足6个插槽的要求 根据申请书的要求: 主机名 为应用程序请求更少的插槽,或者提供更多可用插槽 该节点实际上有4个CPU。因此,我正在寻找允许每个CPU执行更多任务的方法,但我找不到合适的选择。我知道,当物理资源丢失时,仅mpi就能够运行多个进程。我认为问题出在冷淡的一面。

我想编写slurm批处理(sbatch)来运行几个mpi应用程序。因此,我希望能够运行这样的东西

salloc --nodes=1 mpirun -n 6 hostname 
但我得到的信息是:

系统中没有足够的可用插槽来满足6个插槽的要求 根据申请书的要求: 主机名

为应用程序请求更少的插槽,或者提供更多可用插槽

该节点实际上有4个CPU。因此,我正在寻找允许每个CPU执行更多任务的方法,但我找不到合适的选择。我知道,当物理资源丢失时,仅mpi就能够运行多个进程。我认为问题出在冷淡的一面。
您有什么建议/意见吗?

使用
srun
并提供选项
--overmit
,例如:

测试作业:

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=6
#SBATCH --overcommit

srun hostname
运行
sbatch测试。作业

手动开关

通常,srun不会为每个CPU分配多个进程。通过指定
--overmit
,可以明确地允许每个CPU有多个进程

注意:根据您的群集配置,这可能适用于也可能不适用于
mpirun
,但我会坚持使用
srun
,除非您有充分的理由不这样做

一个重要的警告:默认情况下,大多数MPI实现在过度限制的环境中运行时,性能都很差。如何解决这个问题是一个不同的、困难得多的问题