第十节 HPF内部及库过程所认可的扩展 |
本章描述了被HPF2.0版本认可为扩展的内部及库例程。
扩展的内部过程包含了一个转置函数,该函数将Fortran中TRANSPOSE内部函数一般化。某些算法需要沿不同维访问多维数组。在现代机器中,通常最好建立数组的维,使得内层循环运行第一维,以便在局存中元素是连续的。这样就需要一个一般化的转置来做这种数据重排列,这种重排列不是一个简单的数据重映射。在许多情况下,转置的结果将被赋给一个变量,该变量的第一维以(*)格式分配。
对于操作的这种排序,当维数和特定的被交换的维的集合是已知时,FORALL是合适的;例如:
FORALL(I1 = 1:SIZE(ARRAY,1))
FORALL(I2 = 1:SIZE(ARRAY,2))
FORALL(I3 = 1:SIZE(ARRAY,3))
RESULT(I3,I1,I2) = ARRAY(I1,I2,I3)
ENDFORALL
ENDFORALL
ENDFORALL
但是如果输入和结果维之间的关系是变量,FORALL就不是一个方便的用法。我们已将TRANSPOSE内部函数一般化,所允许的参数包括一个任意非零维的输入数组(该数组将被转置),以及一个整数一维数组(提供维置换),该数组的大小是第一个输入数组的维数。
次序参数的缺省值扩展了现存的一个参数的TRANSPOSE函数。
两个新的内部查询函数,ACTIVE_NUM_PROCS和ACTIVE_PROCS_SHAPE对于检测执行程序的处理器子集的数目和形状是很有用的,对它们的修改类似于对ON结构的修改。
扩展库包括映射查询函数。HPF_ALIGNMENT和HPF_TEMPLATE的扩展版本允许一个额外的,可选的DYNAMIC输出参数。这就使得程序可以确定一个对象或它的对准根本目标是否具有DYNAMIC属性。HPF_DISTRIBUTION的新版本以及两个新的映射查询子程序对于确定由一般化块和间接分配格式所产生的映射非常有用。
Copyright: NPACT |