7.7 向处理器子集的映射 BACKWARD FORWARD


这一扩展通过允许在处理器名出现的地方指定处理器子集的方法来允许将对象直接分配到处理器子集上,例如在DISTRIBUTE指令中。指定的子集必须是命名处理器排列的适当子集。

扩展的dist-target的形式化语法如下所示:

H706 extended-dist-target   is processor-name[(section-subscript-list)]

                 or * processor-name[(section-subscript-list)]

                 or *

约束:section-subscript-list中的section-subscript不能是向量下标并被限制为或者是下标或者是下标三元组。

约束:在section-subscript-list中,section-subscripts的个数必须等于processor-name的维数。

 !例1
 !HPF$ PROCESSORS P(10)
     REAL A(100)
 !HPF$ DISTRIBUTE A(BLOCK) ONTO P(2:5)

 !例2
 !HPF$ PROCESSORS Q(10,10)
     REAL A(100,100)
 !HPF$ DISTRIBUTE B(BLOCK,BLOCK) ONTO P(5:10,5:10)

在例1中,按块方式将数组A分配在处理器P(2)到P(5)上。而在例2中,数组B被分配到处理器数组Q的右下圆周中。

对用户的建议:这一扩展与任务结构结合在一起是最有用的,见8.4节,该节允许在不同的处理器子集上同时执行一个计算的多个相互独立的阶段。当代码使用可以并行计算的多个数据结构时,就会出现类似的情况,其中每个个体对象上的计算也呈现并行性,例如,一些流体动力计算中所使用的多块网格中的多个块。在这里,个体块必须在处理器子集上进行分配以开发两级并行性。(对用户的建议结束)


Copyright: NPACT BACKWARD FORWARD