《并行计算的编程模型》一3.6.2 fence和quiet:RMA操作排序

本文探讨了在远程内存访问(RMA)上下文中fence和quiet函数的作用及其提供的排序保证。fence确保单一主动处理单元(PE)到被动PE的操作顺序可见,而quiet则提供更强的全局排序保证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.6.2 fence和quiet:RMA操作排序

当同步屏障创建重量级同步时,fence和quiet要更加轻量级(因此可扩展性更好),但提供的同步保证也更弱。fence仅确保来自单一主动PE操作的前后顺序,并被一个单独的被动PE所见。在代码清单3-10的例子中,fence被用在put和get之间以确保put的结果能在get之前可见,在这种情况下用fence就足够了,因为RMA仅包括这个PE和它的继承者。本质上,当fence函数在两组RMA操作之间被调用时,所提供的保障如下:
fence语义:对来自一个特定主动PE到一个特定被动PE的一系列传输,如果主动PE调用fence函数,则在被动端可以保证所有在fence之前由主动PE发起的操作都能在fence之后发起的传输可见之前在被动端可见。
当所有PE都主动发起传输、被动参与传输并调用fence函数时,成对的排序保证可能不足以确保内存更新正确的顺序。如果需要全局前后顺序,应该使用quiet函数。在代码清单3-11展示的例子中,每个PE用put更新了其继承者上的一个值,然后用get更新其前任的一个值,这种情况下成对排序就不够了,要用quiet保证全局排序。
fence仅对fence前后的操作强加成对的排序,quiet对在其前后的RMA操作施加更强的(也更高开销的)全局排序。但是quiet仍比同步屏障要好得多,因为它只对每个PE的到达操作进行排序而不指定PE之间的同步。
quiet语义:对在主动PE和被动PE之间的一些列传输,调用quiet函数能确保所有在quiet之前发起的RMA操作都能在所有quiet之后发起的RMA操作可见之前被全局可见。
screenshot
screenshot
screenshot
screenshot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值