可扩展MPI内存使用与派生数据类型性能指南
可扩展MPI内存使用:MPICH2案例研究
在MPI的应用中,内存使用的可扩展性是一个关键问题。当前的实现中,某些通信器在整个系统中会消耗 $O(p^2)$ 的内存(假设 $k$ 为常数)。下面我们将探讨如何减少MPICH2的内存消耗。
减少MPICH2内存消耗的步骤
- 已实现的解决方案
- 虚拟通道(VC)管理的改进 :针对VC在通信伙伴少甚至为零时仍消耗 $O(p^2)$ 内存的问题,开发了MPICH2的原型版本,对VC的管理方式进行了重大改进。新方案采用延迟创建VC对象的方式,仅在需要时创建,而非在
MPI_Init时静态创建。这需要对VC的存储和访问方式进行根本性改变。 - LPID映射(LPM)的引入 :取消了每个通信器的VCRT,取而代之的是LPM。LPM将通信器的秩映射到LPID,而不是像VCRT那样直接通过密集数组机制将通信器秩映射到VC。LPM是真正的不透明对象,只能通过函数调用和宏进行访问,这种设计使得通信器的表示可以采用最简洁、内存高效的方式编码。例如,可以使用利用特定领域知识的压缩技术,或者支持恒等映射(LPID始终等于通信器秩),对于满足这种映射的通信器(如
MPI_COMM_WORLD),可将每个进程的内存消耗从 $O(p)$ 降低到 $O(1)$。 - VC的延迟实例化和存储 :在较低层次,通过引用LPI
- 虚拟通道(VC)管理的改进 :针对VC在通信伙伴少甚至为零时仍消耗 $O(p^2)$ 内存的问题,开发了MPICH2的原型版本,对VC的管理方式进行了重大改进。新方案采用延迟创建VC对象的方式,仅在需要时创建,而非在
超级会员免费看
订阅专栏 解锁全文
14

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



