MPI 进程亲和性及相关优化实践
1. MPI 进程亲和性概述
在并行计算中,进程亲和性是一个关键概念,它涉及到如何控制进程的放置和绑定,以优化程序性能。通过前面的示例,我们已经对如何控制进程的放置和亲和性有了一定的了解,同时也掌握了一些检查进程放置和绑定是否符合预期的工具。
1.1 亲和性的概念
亲和性的概念源于操作系统对资源的管理方式。在操作系统层面,我们可以设置每个进程允许运行的位置。在 Linux 系统中,可以使用 taskset 或 numactl 命令来实现这一目的。这些命令以及其他操作系统上的类似工具,随着 CPU 复杂度的增加而出现,其作用是为操作系统的调度器提供更多信息,调度器可能将这些指令视为提示或要求。通过这些命令,我们可以将服务器进程固定到特定的处理器上,以便更接近特定的硬件组件或获得更快的响应。对于单个进程而言,关注亲和性通常就足够了。
1.2 并行编程中的额外考虑因素
在并行编程中,我们需要考虑一组进程的放置问题。例如,假设有 16 个处理器,运行一个 4 个秩(rank)的 MPI 作业,我们需要决定将这些秩放置在哪里,是跨多个插槽(socket)分布、全部放在所有插槽上、紧密打包在一起还是分散放置,以及是否将某些秩相邻放置(如秩 1 和秩 2 在一起,或秩 1 和秩 4 在一起)。为了回答这些问题,我们需要考虑以下几个方面:
- 映射(Mapping) :即进程的放置位置。
- 秩的顺序(Order of ranks) :哪些秩应该相邻。
超级会员免费看
订阅专栏 解锁全文
39

被折叠的 条评论
为什么被折叠?



