《并行计算的编程模型》一3.7.5 收集

3.7.5 收集

集合函数执行聚集收集,将元素块从每个参与PE的对称源对象拷贝,并连续复制到参与集合操作的每个PE上的(更大的)对称目标数组,程序员必须确保对称目标数组足够大以便接收聚集的数据。对32和64位的数据类型都有收集函数,且对每种都有两个收集函数变体:一般的collect允许每个PE贡献不同数目的元素,固定大小的fcollect需要每个PE贡献相同数目的元素。和其他集合函数相同,收集函数允许程序员通过指定开始PE、log2(PE跨步)、参与PE的数目来选择参与的PE子集,以及长度为_SHMEM_COLLECT_SYNC_SIZE的对称同步数组,该数组必须在被所有PE使用前初始化为预定值_SHMEM_SYNC_VALUE,因此需要在初始化和使用之间同步,例如全局同步屏障。但如前所述,可以使用两个同步数组,一旦执行初始化后的全局同步,程序可简单地在两个同步数组之间轮换,而不是在每个收集前加同步屏障。如果每次同步数组使用的PE主动集相同,同步数组可以在随后轮换的收集中使用(不需要重新初始化)。代码清单3-18展示了一般的收集函数。两个同步数组允许通过轮换使用的同步数组背靠背地调用收集函数以控制集合操作。每个集合操作完成时,每个PE的目标数组都包括集合中每个参与者提供的数据块序列。
screenshot
screenshot
screenshot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值