mpirun是否知道请求的核心数是大于还是小于节点中的可用核心数?
我正在考虑mpirun是否知道请求的核心数是大于还是小于节点中的可用核心数?,mpi,cluster-computing,slurm,Mpi,Cluster Computing,Slurm,我正在考虑mpirun和srun之间的哪个进程启动器更适合优化资源。假设集群中的一个计算节点总共有16个核心,我有一个作业要使用10个进程运行 如果我使用mpirun-n10启动它,它是否能够检测到我的请求的核心数少于每个节点中可用的核心数,并自动从单个节点分配所有10个核心?与使用-N指定节点数的srun不同,mpirun似乎没有这样的标志。我认为在一个节点上运行所有进程可以减少通信时间 在上面的示例中,让我们进一步假设每个节点有2个CPU,并且内核平均分布,因此8个内核/CPU和规范规定每
mpirun
和srun
之间的哪个进程启动器更适合优化资源。假设集群中的一个计算节点总共有16个核心,我有一个作业要使用10个进程运行
mpirun-n10
启动它,它是否能够检测到我的请求的核心数少于每个节点中可用的核心数,并自动从单个节点分配所有10个核心?与使用-N
指定节点数的srun
不同,mpirun
似乎没有这样的标志。我认为在一个节点上运行所有进程可以减少通信时间
- 超过每个节点内存(因此我的程序很好,25 GB<48 GB),或
- 超过每个CPU内存(因此我的程序不好,25 GB>24 GB),或
mpirun
没有关于群集资源的信息。它不会要求资源;您必须首先使用sbatch
或salloc
请求分配,然后Slurm将设置环境,以便mpirun
知道在哪个节点上启动进程。因此,您必须查看sbatch
和salloc
选项,以创建符合您需要的请求。默认情况下,Slurm将尝试在最少数量的节点上“打包”作业
srun
也可以在由sbatch
或salloc
创建的分配中工作,但它也可以自己执行请求。我不知道mpirun
也可以在slurm
准备的资源上运行,这段时间我总是使用PBS
和mpirun
(或mpiexec
)和带有srun的sbatch
。请参阅更多信息