我使用包含多个节点的集群。每个都有 2 个处理器,内部有 8 个核心。我将 Open MPI 与 SLURM 结合使用。
我的测试显示 MPI Send/Recv 数据传输速率如下:在等级 0 的 MPI 进程和 MPI 进程 1 之间约为 9 GB/秒,但在进程 0 和进程 2 之间为 5 GB/秒。我认为发生这种情况是因为我们的进程在不同的处理器上执行。
我想避免非本地内存访问。我找到的推荐here没有帮助。所以问题是,是否可以在同一个处理器上运行 8 个 MPI 进程?如果是 - 我该怎么做?
谢谢。
最佳答案
以下 mpiexec
命令行选项应该可以在 1.7 之前的 Open MPI 版本中实现此目的:
--by-core --bind-to-core --report-bindings
最后一个选项将漂亮地打印每个等级的实际绑定(bind)。绑定(bind)还会激活共享内存 BTL 模块中的一些 NUMA 感知。
从 Open MPI 1.7 开始,进程在可用套接字上循环分配,并默认绑定(bind)到单个内核。要复制上述命令行,应该使用:
--map-by core --bind-to core --report-bindings
关于c - MPI 和 2 插槽节点非均匀内存访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27527046/