评估OpenSHMEM显式远程内存访问操作和合并请求
1. 引言
OpenSHMEM 1.3引入了隐式非阻塞的put和get操作到现有的库应用程序编程接口(API)中。这些操作的语义允许先发布操作,然后等待其完成,相较于之前的阻塞语义,能实现通信与其他操作的重叠。然而,这些操作只有在通过 shmem quiet 、 shmem barrier 或 shmem barrier all 保证远程内存更新后才被视为完成。由于这些是全局完成操作,对于只需要更细粒度完成控制的应用程序,可能会产生显著的性能影响。
本文提出引入带有显式请求的非阻塞数据传输调用、将多个操作使用单个请求的能力以及合并多个请求的接口。显式请求能够跟踪单个数据传输操作,将相关的远程内存访问(RMA)操作分组到单个请求句柄中,为程序员提供了灵活性,并可提高应用程序性能。
2. 动机
传统的OpenSHMEM编程模型基于通过快速单边RMA操作实现最大程度的计算 - 通信重叠,且无需目标处理元素(PE)的参与。OpenSHMEM 1.3引入的隐式非阻塞调用具有非阻塞调用的许多优点,但缺乏跟踪操作完成的能力。显式非阻塞调用通过单个请求句柄提供了细粒度的控制。以下是合并显式RMA操作句柄既有利又高效的场景:
- 用例1:OpenSHMEM线程
- 随着OpenSHMEM规范向支持线程安全和线程模型发展,定义单个PE内线程间的同步机制变得至关重要。单个线程内的许多操作可能需要顺序一致性。与使用显式句柄管理单个通信调用相比,合并单个线程的通信句柄可以更轻松地对操
超级会员免费看
订阅专栏 解锁全文

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



