3.7 集合操作
OpenSHMEM提供了几个通常被认为是集合操作的函数,并分为四类:广播、收集、归约(所有操作都在对称内存中)和非全局同步屏障(通常被划分为同步操作,这里包含它是因为它也依赖于与其他集合操作相同的同步数组(sync array)结构)。其中的每个函数都包含同步并需要使用对称同步数组。这些操作运行在所有PE 或PE的子集上。如果一个集合操作执行在PE的子集上,仅参与这个操作的PE可以调用集合函数;如果未参与的PE试图调用集合操作,结果是未定义的。值得注意的是虽然集合操作包含同步,但对于OpenSHMEM的集合操作,最好将其理解为更宽松的“前后”概念。例如在广播中,可以推断在发送者发送数据前接收者不能完成操作,但除了发送者必须在接收者完成之前启动之外,并不意味着各参与PE的启动和结束时间有任何顺序。