6.2 系统查询内部函数 |
在一个多处理器实现中,可以在一个依赖于实现的多维处理器数组中排列这些处理器。系统查询函数返回一些与其下面的机器以及处理器结构相关的值,包括下面的处理器数组的大小和形状。NUMBER_OF_PROCESSORS返回程序可利用的处理器总数或者程序沿处理器数组的某一指定维可利用的处理器数。PROCESSORS_SHAPE返回处理器数组的形状。
为允许引用HPF系统查询内部函数,对Fortran中受限表达式的定义进行了扩展。特别是,在Fortran标准7.1.6.2节列表的末尾增加了:
(13)引用任何一个系统查询函数NUMBER_OF_PROCESSORS或PROCESSORS_SHAPES时,其每一个参数都是受限表达式。
在模块的作用域单元或主程序中,若一个变量出现在HPF指令的受限表达式中,则该变量必须是一个隐DO变量或是一个参数,该参数可以出现在数组查询函数,位查询函数,字符查询函数,类查询函数或数字查询函数的引用中。
系统查询内部函数所返回的值在程序的执行过程中保持恒定。这样,NUMBER_OF_PROCESSORS和PROCESSORS_SHAPE具有受限表达式的值并可在任何一个可使用其它Fortran受限表达式的地方被使用。特别是,NUMBER_OF_PROCESSORS可用于说明表达式中。
系统查询函数的值不能出现在初始化表达式中,这是因为不能将其假定为常数。特别是,HPF程序可在一个编译时无法知道其结构的机器上编译运行。
注意,系统查询函数查询物理机器,而且与可能出现的任何PROCESSORS指令无关。如果HPF程序在一个较大机器的物理划分上运行,则系统查询函数所返回的是实际执行HPF程序的较小划分的参数。
一些诸如具有树拓扑的机器不能用PROCESSORS_SHAPE返回其“自然”形状。在这些情况下,实现时必须能够提供一些关于机器的可行的,一致的描述,例如一个大小为NUMBER_OF_PROCESSORS()的一维数组。编译器还应必须能够安排这种描述与下面的硬件处理器鉴别机制间的映射。
对用户的建议:SIZE(PROCESSORS_SHAPE())返回处理器数组的形状。系统查询函数的引用可以出现在数组定义和HPF指令中,例如:
INTEGER, DIMENSION(SIZE(PROCESSORS_SHAPE())) :: PSHAPE
!HPF$ TEMPLATE T(100,3*NUMBER_OF_PROCESSORS())
(对用户的建议结束)
Copyright: NPACT |