10.2 扩展库过程的规格说明 BACKWARD FORWARD


10.2.1 HPF_ALIGNMENT(ALIGNEE,LB,UB,STRIDE,AXIS_MAP,
    IDENTITY_MAP, DYNAMIC,NCOPIES)

可选参数:LB,UB,STRIDE,AXIS_MAP,IDENTITY_MAP,DYNAMIC,NCOPIES

描述:返回关于变量和它所根本对准的对准目标(数组或模板)之间的对应关系。

分类:映射查询子程序。

参数:

ALIGNEE: 

LB(可选的):

UB(可选的):

STRIDE(可选的):

AXIS_MAP(可选的):

IDENTITY_MAP(可选的):

DYNAMIC(可选的):

NCOPIES(可选的):

例子:如果ALIGNEE是标量,则不对LB,UB,STRIDE,或AXIS_MAP的任何元素置值。

给定说明:

     REAL PI=3.1415927
     DIMENSION A(10,10),B(20,30),C(20,40,10),D(40)
 !HPF$ TEMPLATE T(40,20)
 !HPF$ DYNAMIC A
 !HPF$ ALIGN A(I,:) WITH T(1+3*I,2:20:2)
 !HPF$ ALIGN C(I,*,J) WITH T(J,21-I)
 !HPF$ ALIGN D(I) WITH T(I,4)
 !HPF$ PROCESSORS PROCS(4,2), SCALARPROC
 !HPF$ DISTRIBUTE T(BLOCK,BLOCK) ONTO PROCS
 !HPF$ DISTRIBUTE B(CYCLIC,BLOCK) ONTO PROCS
 !HPF$ DISTRIBUTE ONTO SCALARPROC :: PI

假定实际映射与指令指定的一样,HPF_ALIGNMENT的结果是:

        A    B     C     D
 ————————————————————————
   LB   [4,2]  [1,1]  [20,N/A,1]  [1]
   UB   [31,20] [20,30]  [1,N/A,10]   [40]
  STRIDE  [3,2]  [1,1]   [-1,0,1]   [1]
  AXIS_MAP  [1,2]  [1,2]   [2,0,1]   [1]
IDENTITY_MAP false  true   false    false
  DYNAMIC  true   false   false    false
  NCOPIES   1    1     1      1

其中“N/A”指明了一个依赖于实现的结果。为阐述NCOPIES的使用,考虑:

     LOGICAL BOZO(20,20),RONALD_MCDONALD(20)
 !HPF$ TEMPLATE EMMETT_KELLY(100,100)
 !HPF$ ALIGN RONALD_MCDONALD(I) WITH BOZO(I,*)
 !HPF$ ALIGN BOZO(J,K) WITH EMMETT_KELLY(J,5*K)

调用HPF_ALIGNMENT(RONALD_MCDONALD,NCOPIES=NC)将NC置为20。现在考虑:

     LOGICAL BOZO(20,20),RONALD_MCDONALD(20)
 !HPF$ TEMPLATE WILLIE_WHISTLE(100)
 !HPF$ ALIGN RONALD_MCDONALD(I) WITH BOZO(I,*)
 !HPF$ ALIGN BOZO(J,*) WITH WILLIE_WHISTLE(5*J)

调用HPF_ALIGNMENT(RONALD_MCDONALD,NCOPIES=NC)将NC置为1。

10.2.2 HPF_DISTRIBUTION(DISTRIBUTEE,AXIS_TYPE,AXIS_INFO,
    PROCESSORS_RANK,PROCESSORS_SHAPE,PLB,PUB,PSTRIDE,
    LOW_SHADOW,HIGH_SHADOW)

可选参数:AXIS_TYPE, AXIS_INFO, PROCESSORS_RANK,PROCESSORS_SHAPE, PLB, PUB, PSTRIDE, LOW_SHADOW, HIGH_SHADOW

描述:HPF_DISTRIBUTION子程序返回与一个变量相关联的根本对准目标的分配信息。

分类:映射查询子程序。

参数:

DISTRIBUTEE:

AXIS_TYPE(可选的):

AXIS_INFO(可选的):

PROCESSORS_RANK(可选的):

PROCESSORS_SHAPE(可选的):

PLB(可选的):

PUB(可选的):

PSTRIDE(可选的):

LOW_SHADOW(可选的):

HIGH_SHADOW(可选的):

例子:给定6.7.15节例子中的说明,且假定实际映射与指令指定的相同,HPF_DISTRIBUTION的结果是:

       A            B        PI
 —————————————————————————————
 AXIS_TYPE ['BLOCK','BLOCK']  ['CYCLIC','BLOCK']  [ ]
 AXIS_INFO    [10,10]       [1,15]       [ ]
PROCESSORS_SHAPE  [4,2]        [2,2]      [ ]
PROCESSORS_RANK   2          2       0 
  PLB      [4,1]        [2,1]      [ ]
  PUB      [1,2]        [3,2]      [ ]
  PSTRIDE    [-1,1]        [1,1]      [ ]
10.2.3 HPF_TEMPLATE(ALIGNEE,TEMPLATE_RANK,LB,UB,AXIS_TYPE
    AXIS_INFO,NUMBER_ALIGNED,DYNAMIC)

可选参数:TEMPLATE_RANK,LB,UB,AXIS_TYPE,AXIS_INFO,NUMBER_ALIGNED,DYNAMIC

描述:HPF_TEMPLATE子程序返回与一个变量相关联的根本对准目标的信息;HPF_TEMPLATE所返回的是从根本对准目标的角度所看到的变量的信息,而HPF_ALIGNMENT所返回的信息则是从变量的角度所看到的。

分类:映射查询子程序。

参数:

ALIGNEE:

TEMPLATE_RANK(可选的):

LB(可选的):

UB(可选的):

AXIS_TYPE(可选的):

AXIS_INFO(可选的):

NUMBER_ALIGNED(可选的):

DYNAMIC(可选的):

例子:给定6.7.15节例子中的说明,且假定实际映射与指令指定的相同,HPF_TEMPLATE的结果是:

       A         C        D
 —————————————————————————————
  LB   [1,1]       [1,1]       [1,1]   
  UB   [40,20]      [40,20]       [40,20]
AXIS_TYPE  ['NORMAL',    ['NORMAL',    ['NORMAL',
      'NORMAL']     'NORMAL']     'SINGLE']
AXIS_INFO  [1,2]       [3,1]       [1,4]  
NUMBER_ALIGNED 3         3         3
TEMPLATE_RANK  2         2         2
 DYNAMIC   false       false       false
10.2.4 HPF_MAP_ARRAY(ARRAY,TEMPLATE_DIM,MAP_ARRAY)

描述:返回与ARRAY相关联的根本对准目标第TEMPLATE_DIM维的间接分配中所使用的映射数组。

分类:映射查询子程序。

参数:

ARRAY:

TEMPLATE_DIM:

MAP_ARRAY:

例子:给定定义

     DIMENSION A(2)
 !HPF$ TEMPLATE T(4,8)
 !HPF$ ALIGN A(I,*) WITH T(2*I,5)
 !HPF$ PROCESSORS PROCS(2,2)
 !HPF$ DISTRIBUTE T(INDIRECT((/1,2,2,1/)),BLOCK((/3,5/))) ONTO PROCS

假定实际映射与指令所指定的相同,则调用HPF_MAP_ARRAY(A,TEMPLATE_DIM=1,MAP_ARRAY=M)后,M的值为
。调用HPF_MAP_ARRAY(A,TEMPLATE_DIM=2,MAP_ARRAY=M)后,M的值为

10.2.5 HPF_NUMBER_MAPPED(ARRAY,PROCESSORS_DIM,NUMBER_MAPPED)

描述:返回映射到处理器排列第PROCESSORS_DIM维每个元素的ARRAY的根本对准目标的元素个数,ARRAY的根本对准目标在该处理器排列上进行分配。

分类:映射查询子程序。

参数:

ARRAY:

PROCESSORS_DIM:

NUMBER_MAPPED:

例子:给定定义

     DIMENSION A(2,40)
 !HPF$ TEMPLATE T(4,8,4,16)
 !HPF$ ALIGN A(I,*) WITH T(2*I,5,*,*)
 !HPF$ PROCESSORS PROCS(2,2,3)
 !HPF$ DISTRIBUTE T(INDIRECT((/2,2,1,2/)),BLOCK((/3,5/)),*,BLOCK) ONTO PROCS

假定实际映射与指令所指定的相同,则调用HPF_NUMBER_MAPPED(A,PROCESSORS_DIM=1,NUMBER_MAPPED=M)后,M的值为。调用HPF_NUMBER_MAPPED(A,PROCESSORS_DIM=2,NUMBER_MAPPED=M)后,M的值为。调用HPF_NUMBER_MAPPED(A,PROCESSORS_DIM=3,NUMBER_MAPPED=M)后,M的值为


Copyright: NPACT BACKWARD FORWARD