利用触发操作卸载会合消息
1. 引言
在基于MPI的科学与工程应用中,常使用大消息进行批量数据传输。随着处理器性能提升远超网络性能改进,最大化消息与计算的重叠以提高网络效率变得愈发重要。MPI实现传统上有两种传递大消息的协议:
- 急切协议 :假定消息的接收已预先发布,若消息意外,需重传消息体。
- 会合协议 :先发送头部,匹配后再进行主体的批量传输。
传统会合协议在处理预期长消息时,需应用程序进入MPI库推进通信;对于意外消息,目标在发布接收时可通过RDMA获取发起传输。但要支持重叠,通常需在“工作”开始前发布接收,这可能导致消息在接收后到达,MPI库需等应用工作完成并调用MPI Wait() 才能发起批量数据传输。
本文提出一种利用Portals 4中触发操作的会合协议,无需主机级线程或急切发送长消息,就能实现重叠,且实现比基于完整NIC的会合协议更简单。
2. 相关工作
大多数MPI实现采用某种会合协议传输大消息,优化策略主要分为两类:
- 基于主机的会合优化
- 在MPI库内执行会合 :消息传递仅在应用程序进行MPI库调用且内部进度引擎启动时推进。虽有人尝试用远程DMA(RDMA)操作优化,但应用程序调用MPI库的速率会限制大消息重叠的效果。
- 专用用户级线程 :多数当前MPI实现支持此选项,部分HPC网络也采用。该方法避免依赖应用频繁调用MPI库,但会增加调度和协调的复杂性。
-