3.7.1 选择集合参与者
要参与一个集合操作,集合的每个成员必须调用具有相同源和目标参数的相同集合函数,并且每个成员必须指定相同的PE集参与集合。每个集合操作需要三个参数描述哪些PE将参与操作:初始PE、log2(PE_跨步)和参与PE的数目。因此,将这三个参数分别设为(0, 2, 6)意味着该集合操作将包含PE0、PE4、PE8、PE12、PE16和PE20,而(1, 0, 6)将包括PE1、PE2、PE3、PE4、PE5和PE6(当log2(PE_跨步)=0,跨步为1)。
识别重量级同步:在OpenSHMEM函数的调用序列中出现同步数组可以认为是出现重量级同步的指示器,这会在某些平台上对可扩展性有负面影响。此外,虽然参与PE数目不要求是2的幂,非2的幂对一些集合操作的实现会产生性能影响。最后,其他不需要同步数组的同步,包括全局同步屏障和对称分配函数。当需要这些函数时(或可以避免)加以仔细对待是利用OpenSHMEM提供的扩展性优势的关键。
时间: 2024-10-26 08:15:21