OpenSHMEM 同步与内存复用及基于 OFI 的实现解析
一、OpenSHMEM 同步方法概述
在并行计算中,OpenSHMEM 的同步机制对于高效运行至关重要。其中介绍了几种不同的同步方法,下面为你详细阐述。
(一)添加线程支持的调整
若要添加对线程的支持,只需像之前的方法一样,将锁与线程 ID 关联起来。非阻塞操作的工作方式也与之前相同。
(二)成对同步方法
- 缓冲区分配
此方法不再基于 pSync 风格的缓冲区。每个处理元素(PE)为每个需要向其写入数据的远程 PE 准备 n 个专用缓冲区。例如,若有三个 PE 需要与 PE i 进行同步操作,PE i 会为每个这样的 PE 准备三组独立的缓冲区。 - 同步操作流程
- 当一个 PE 需要与目标 PE 同步时,它会使用并锁定目标可用的第一个缓冲区;若没有可用缓冲区,则会分配新的缓冲区。
- 由于接收方可能不知道发送方选择了哪个缓冲区进行同步,所以发送方必须发送一个用于集体操作的唯一 ID,接收方则需要扫描发送方可能使用的所有缓冲区,查找相同的 ID。
- 当一个 PE 锁定一个缓冲区时,它会记录与之关联的 ID。当接收到来自特定 PE 且带有特定 ID 的消息时,它会解锁与该 PE 过去操作 ID 相关联的缓冲区。这意味着,从源 PE 接收到具有特定操作 ID 的消息,依赖于该 PE 已经处理了目标 PE 过去操作的所有缓冲区。
- <
超级会员免费看
订阅专栏 解锁全文
1118

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



