Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C MPI和2插槽节点非均匀内存访问_C_Memory_Mpi_Hpc - Fatal编程技术网

C MPI和2插槽节点非均匀内存访问

C MPI和2插槽节点非均匀内存访问,c,memory,mpi,hpc,C,Memory,Mpi,Hpc,我使用一个包含多个节点的集群。每个处理器有2个处理器,内部有8个内核。我在SLURM中使用openmpi 我的测试表明,MPI发送/接收数据传输速率如下:秩为0的MPI进程和MPI进程1之间的数据传输速率约为9 GB/秒,但进程0和进程2之间的数据传输速率为5 GB/秒。我假设这是因为我们的进程在不同的处理器上执行 我想避免非本地内存访问。我发现的建议没有帮助。所以问题是,是否可以在同一个处理器上运行8个MPI进程?如果是,我该怎么做 谢谢。这似乎是可能的。OpenMPI运行手册页的进程绑定和R

我使用一个包含多个节点的集群。每个处理器有2个处理器,内部有8个内核。我在SLURM中使用openmpi

我的测试表明,MPI发送/接收数据传输速率如下:秩为0的MPI进程和MPI进程1之间的数据传输速率约为9 GB/秒,但进程0和进程2之间的数据传输速率为5 GB/秒。我假设这是因为我们的进程在不同的处理器上执行

我想避免非本地内存访问。我发现的建议没有帮助。所以问题是,是否可以在同一个处理器上运行8个MPI进程?如果是,我该怎么做


谢谢。

这似乎是可能的。OpenMPI运行手册页的进程绑定和Rankfiles部分看起来很有希望。我将尝试使用--report binding选项集显示的一些选项,这样您就可以验证流程放置是否符合您的预期,并查看您是否能从代码中获得预期的性能改进。

您应该查看MPI库的hostfile/rankfile文档。openmpi和MPICH都使用不同的格式,但它们都能满足您的需要


请记住,如果您过度订阅处理器,您将遇到性能问题。在8核处理器上运行超过8个列组将导致您失去从本地共享内存中获得的性能优势。

以下一组命令行选项可用于
mpiexec
1.7之前的Open MPI版本:

--按核心--绑定到核心--报告绑定
最后一个选项将漂亮地打印每个列组的实际绑定。绑定还激活共享内存BTL模块中的一些NUMA感知

从OpenMPI1.7开始,进程在可用套接字上循环分布,默认情况下绑定到单个核心。要复制上述命令行,应使用:

--按核心映射--绑定到核心--报告绑定
带Slurm,设置:

#SBATCH --ntasks=8
#SBATCH --ntasks-per-socket=8

如果Slurm配置正确,则在同一个插槽(CPU芯片)上分配所有内核。

谢谢,这正是我想要的!