1.4 与HPF 1.1的不同点 BACKWARD FORWARD


HPF 2.0在很多方面与HPF 1.1不同:

基于Fortran 95: Fortran, 而不是Fortran 90现在被定义成用于扩展的基本语言; 这意味着HPF包含了1995年修订时加给Fortran的所有特征. 通过这次修订, 一些HPF 1.1的特征现在成为了Fortran标准的一部分, 因此就不再作为Fortran的HPF扩展而出现.

被去掉的特征: HPF 1.1的一些迄今未实现的特征已从语言中被去掉, 因为经验显示去掉它们所带来的简化远远超过了这些特征的优点.

语言的重划分: 新文档中描述了两个部件: HPF 2.0(期望能够被广泛和快速实现)和所认可的扩展(它们不是HPF 2.0的一部分, 但是为响应用户的要求, 可在编译技术成熟时将其包含到未来的实现中).

去掉了HPF子集: HPF1.1中对全集HPF(Full HPF)和子集HPF(Subset HPF)的描述不再保留, 虽然最初的HPF 1.1子集只是在附录中被引证的.

被重新归类为所认可扩展的特征: 将一些特征从HPF 1.1中移入到所认可的扩展中.

新特征: 在基本语言中加入了一些新特征.

新的所认可的扩展: 许多进一步的新特征被定义为语言所认可的的扩展.

所承认的由外部支持的外部函数: 最后, 此文档承认了一个新的种类, HPF相关的外部接口, 它们被看成是与这种接口相符的适当标准, 但不被包含在所认可的扩展中. 对每一个这种接口的内容负责的是提出它的组织而不是HPF论坛.

下面的分节中, 对这些种类中的每一个进行摘要说明.

1.4.1 标准Fortran中的现有特征

下面的特征原本是HPF 1.1的一部分, 由于它们现在已成为ISO Fortran的一部分, 因此从本文档中被去掉了:

. FORALL语句和结构

. 过程的PURE属性

. 对MINLOC, MAXLOC内部函数进行扩展以包括一个可选的DIM参数

1.4.2 在HPF中被去掉或受约束的特征

语言中的下列特征被去掉:

. 串行数组可以不再被显式映射;

. 在任意一个可对被分配的数据进行重分配的过程调用中, 此过程现在必须有一个显式的接口;

. 简化了INHERIT指令的处理, 因为不再可能一起指明INHERIT和DISTRIBUTE.

1.4.3 被移入到所认可扩展中的特征

DYNAMIC属性和REDISTRIBUTE及REALIGN语句被移入到了所认可的扩展中

1.4.4 HPF 2.0的新特征

HPF 2.0引入了下面的新结构:

. 用于INDEPENDENT循环的REDUCTION子句;

. 新的HPF_LIBRARY过程SORT_DOWN, SORT_UP.

1.4.5 新的所认可的扩展

不属于HPF 1.1的所认可的扩展包括下列特征:

. 对象现在可被映射到处理器子集(processor subsets)上. 这一点有助于提高某些条件下效率, 同时需有效地使用TASK_REGION结构.

. 具有POINTER属性的对象可被显式映射.

. 现在可以对派生(derived)类型的部件进行分配

. 加入了一些新的分配方式, 包括GEN_BLOCK和INDIRECT. 由GEN_BLOCK所提供的对数据分配的更紧凑的控制允许增强的负载平衡; INDIRECT分配允许对不规则网格进行更直接地处理.

. RANGE指令向编译器提供了关于ON变量, 复制的哑元以及指针的额外信息, 并考虑到了增强的效率.

. SHADOW指令为被映射的分配对象提供了关于对重叠区域适当分配的信息.

. ON指令向编译器提供了关于在何处能够最好地执行一个计算的建议. 它还引进了活动处理器集合(active processor sets)的概念, 即当前活动的处理器子集.

. RESIDENT指令能够鉴别出当前活动处理器的本地数据, 并为编译器去掉了在此集合外产生通信测试的需求.

. TASK_REGION指令结合对处理器子数组的分配提供了一种机制来描述许多并行模式, 包括并行区域(parallel sections), 嵌套并行(nested parallelism), 数据并行流水(data parallel pipelines).

.引进了额外的内部过程ACTIVE_NUM_PROCS和ACTIVE_PROCS_SHAPE, 以及一个一般化的TRANSPOSE内部函数 .

. 重新修订了HPF_LIBRARY过程HPF_ALIGNMENT, HPF_DISTRIBUTION和HPF_TEMPLATE, 并增加了两个新过程HPF_MAP_ARRAY和HPF_NUMBER_MAPPED.

. Fortran的READ/WRITE中新增的I/O控制参数和一条新语句WAIT方便了异步输入/输出

. HPF 2.0中所定义的对于EXTRINSIC机制的扩展为HPF同C和FORTRAN 77的互操作性提供了支持

1.4.6 被承认的外部支持的HPF外部函数

EXTRINSIC属性故意包含了一系列潜在的范围很大的工具. 它们仅有很小的可能被合并到HPF 2.0及所认可的扩展中. HPF论坛因此包含了一个机制, 通过它可以建议进一步的外部工具, 而且如果发现有用, 可以及时标准化. 这一机制要求每一个建议必须具有可证明的工具并对其进行支持; 然后就可提请HPF论坛对其进行承认. 本文档中有两个这样的被承认的接口:

  . HPF_CRAFT: 用HPF特征提供一个SPMD模式

  . Fortran 77本地库: 定义了本地模式中对于Fortran 77过程调用的支持.


Copyright: NPACT BACKWARD FORWARD