mpirun with slurm:如何在单个CPU上运行多个进程
我想编写slurm批处理(sbatch)来运行几个mpi应用程序。因此,我希望能够运行这样的东西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就能够运行多个进程。我认为问题出在冷淡的一面。
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实现在过度限制的环境中运行时,性能都很差。如何解决这个问题是一个不同的、困难得多的问题