4.3.2 HPF库模式 BACKWARDFORWARD


HPF定义一个函数和子程序库,包括了大量用于表达高级的数据并行算法的子程序。也有子程序 用于查询实际数组的运行时的实际对准和分配情况。子程序收集在一个库模式中(由一个HPF实现来提供这个)为存取这些子程序,要求把USE语句放在定义的范围内。注意这些子程序不是内部的(所以编译器自动地了解)因为多个参数表和类型特别行为的灵活性是不必要的。

提供这些许多子程序的基本理论是在大范围的数据并行算法中,这些操作是必要的。希望生产商提供的实现比一个用户的实现更有效,用户只能为一种特定的机器实现必要的优化。

在HPF_LIBRARY模式中可得到的子程序在下面进行简单地介绍。更详细的参看7节提到的HPF文件。

映射查询子程序( Mapping inquiry subroutines )

数组的映射通过一种实现来完成的,该实现考虑程序中的劝告。为查询运行时映射情况,有子程序PF_ALIGNMENT, HPF_TEMPLATE和HPF_DISTRIBUTION。

二进制位操作函数(Bit manipulation function)

这些二进制位操作函数被提供

分别返回主要的零二进制位数,一个二进制位数和整形I的二进制位。

数组归并函数(Array reduction functions)

数组归并函数定义了附加的归并函数,其扩展了在Fortran90中已有的集合(ANY,ALL,COUNT,PRODUCT, SUM,MAXVAL和MINVAL)。新的子程序是IALL,IANY,IPARITY和PARITY。相应于二进制的 这些操作分别是IAND,IOR,IEOR和.NEQV.。

数组组合分放函数k(Array combining scatter functions)

数组组合分放函数为允许在向量V中的重复值,这些子程序判断赋值

赋给同一数组元素的值由一个组合器XXX组合,其中XXX( ALL, ANY, COPY, COUNT, IALL, IANY,IPARITY, MAXVAL,MINVAL, PARITY, PRODUCT, SUM).这些函数有如下形式:

其中XXX指定一个组合器。这些子程序必须返回一个结果,其等价于BASE和ARRAY中各元素的一些组合。这些元素被送到INDX数组的坐标所定义的位置。

数组前缀和后缀函数(Array prefix and suffix functions)

一个前缀函数--或scan--沿一个向量应用一个操作,以便任何元素是对其前面元素操作的结果。例如:

象分放函数一样,有同样的组合器,有一些可选项控制前缀或后缀操作:

后缀函数与前缀函数以不同的方向进行操作:在给定位置的结果依赖于后序元素。mask定义激活元素,并沿着数组ARRAY的一个特定维,应用scan . scan也可以被分段。如果( 可选的 )DIM参数不出现,那么ARRAY被作为按数组元素顺序存在的一个向量。

数组排序函数(Array sorting functions)

为产生数组的等级转换,有两个函数。这些能对全部多维数组或沿数组的特定维进行操作。


Copyright: NPACT BACKWARDFORWARD