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
    似乎没有这样的标志。我认为在一个节点上运行所有进程可以减少通信时间

  • 在上面的示例中,让我们进一步假设每个节点有2个CPU,并且内核平均分布,因此8个内核/CPU和规范规定每个节点有48 GB内存(或24 GB/CPU或3 GB/core)。假设我的作业中的每个派生进程需要2.5 GB,那么所有进程都将使用25 GB。当一个程序超过内存限制时,是不是总的内存需求:

    • 超过每个节点内存(因此我的程序很好,25 GB<48 GB),或
    • 超过每个CPU内存(因此我的程序不好,25 GB>24 GB),或
    当每个进程的内存超过每个核心内存时(因此我的程序很好,2.5 GB<3 GB)


  • mpirun
    没有关于群集资源的信息。它不会要求资源;您必须首先使用
    sbatch
    salloc
    请求分配,然后Slurm将设置环境,以便
    mpirun
    知道在哪个节点上启动进程。因此,您必须查看
    sbatch
    salloc
    选项,以创建符合您需要的请求。默认情况下,Slurm将尝试在最少数量的节点上“打包”作业


    srun
    也可以在由
    sbatch
    salloc
    创建的分配中工作,但它也可以自己执行请求。

    我不知道
    mpirun
    也可以在
    slurm
    准备的资源上运行,这段时间我总是使用
    PBS
    mpirun
    (或
    mpiexec
    )和带有
    srun的
    sbatch
    。请参阅更多信息