目录
前言
HPFF 2 致谢
一. 简介
1. 概述
1.1 高性能Fortran的目标和范围
1.2 HPF语言模型
1.2.1 数据映射指令
1.3 HPF 2.0语言特征概述
1.3.1 HPF 2.0语言特征
1.3.2 HPF 2.0 所认可的扩展
1.4 与HPF 1.1的不同点
1.4.1 标准Fortran中的现有特征
1.4.2 在HPF 2.0中被去掉或受约束的特征
1.4.3 被移入到所认可扩展中的特征
1.4.4 HPF 2.0的新特征
1.4.5 新的所认可的扩展
1.4.6 被承认的外部支持的HPF外部函数
1.5 概念
1.6 指令语法
二.高性能Fortran语言
2 数据映射
2.1 模型
2.2 数据对准和分配指令的语法
2.3 DISTRIBUTE 指令
2.4 ALIGN指令
2.5 可分配的数组和指针
2.6 PROCESSORS 指令
2.7 TEMPLATE 指令
2.8 存储和顺序相联
2.8.1 存储相联
2.8.2 顺序指令
3. INDEPENDENT及相关指令
3.1 INDEPENDENT指令
3.1.1 INDEPENDENT指令的可视化
3.1.2 NEW变量
3.1.3 REDUCTION变量和语句
3.1.4归约的实现及语义
3.2 INDEPENDENT的进一步例子
4. 子程序接口中的数据映射
4.1 简介
4.2 要求何种重映射,谁来做它
4.3 分配和处理器排列
4.3.1 例子
4.3.2 忽略子句时会发生什么
4.4 对准
4.4.1 哑参的模板
4.4.2 INHERIT指令
4.4.3 ALIGN指令
4.5 映射集合上的等价和偏序
4.6 显式接口
4.6.1 过程特性
4.7 指针和目标上的约束
4.7.1 例子
4.8 参数传递和顺序相联
4.8.1 顺序相联规则
4.8.2 顺序相联讨论
4.8.3 顺序相联的例子
5 外部程序单元
5.1 概述
5.2 外部程序单元的定义
5.2.1 函数和子程序语句
5.2.2 程序,模块,以及块数据语句
5.2.3 外部前缀
5.3 调用HPF外部子程序
5.3.1对类型、过程和数据的访问
5.3.2 调用的效果
5.4 外部过程例子
6 内部及库过程
6.1 概念
6.2 系统查询内部函数
6.3计算内部函数
6.4 库过程
6.4.1 映射查询子程序
6.4.2 位维护函数
6.4.3 数组归约函数
6.4.4 数组组合分散函数
6.4.5 数组前缀和后缀函数
6.4.6 数组排序函数
6.5 一般的内部及库过程
6.5.1 系统查询内部函数
6.5.2 映射查询子程序
6.5.3 位维护函数
6.5.4 数组归约函数
6.5.5 数组组合分散函数
6.5.6 数组前缀和后缀函数
6.5.7 数组排序函数
6.6 内部过程规格说明
6.6.1 ILEN(I)
6.6.2 NUMBER_OF_PROCESSORS(DIM)
6.6.3 PROCESSORS_SHAPE()
6.7 库过程规格说明
6.7.1 ALL_PREFIX(MASK,DIM,SEGMENT,EXCLUSIVE)
6.7.2 ALL_SCATTER(MASK,BASE,INDX1,...,INDXn)
6.7.3 ALL_SUFFIX(MASK,DIM,SEGMENT,EXCLUSIVE)
6.7.4 ANY_PREFIX(MASK,DIM,SEGMENT,EXCLUSIVE)
6.7.5 ANY_SCATTER(MASK,BASE,INDX1,...,INDXn)
6.7.6 ANY_SUFFIX(MASK,DIM,SEGMENT,EXCLUSIVE)
6.7.7 COPY_PREFIX(ARRAY,DIM,SEGMENT)
6.7.8 COPY_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)
6.7.9 COPY_SUFFIX(ARRAY,DIM,SEGMENT)
6.7.10 COUNT_PREFIX(MASK,DIM,SEGMENT,EXCLUSIVE)
6.7.11 COUNT_SCATTER(MASK,BASE,INDX1,...,INDXn)
6.7.12 COUNT_SUFFIX(MASK,DIM,SEGMENT,EXCLUSIVE)
6.7.13 GRADE_DOWN(ARRAY,DIM)
6.7.14 GRADE_UP(ARRAY,DIM)
6.7.15 HPF_ALIGNMENT(ALIGNEE,LB,UB,STRIDE,AXIS_MAP,IDENTITY_MAP,NCOPIES)
6.7.16 HPF_DISTRIBUTION(DISTRIBUTEE,AXIS_TYPE,AXIS_INFO,PROCESSORS_RANK,PROCESSORS_SHAPE)
6.7.17 HPF_TEMPLATE(ALIGNEE,TEMPLATE_RANK,LB,UB,AXIS_TYPE,AXIS_INFO,NUMBER_ALIGNED)
6.7.18 IALL(ARRAY,DIM,MASK)
6.7.19 IALL_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.20 IALL_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)
6.7.21 IALL_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.22 IANY(ARRAY,DIM,MASK)
6.7.23 IANY_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.24 IANY_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)
6.7.25 IALNY_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.26 IPARITY(ARRAY,DIM,MASK)
6.7.27 IPARITY_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.28 IPARITY_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)
6.7.29 IPARITY_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.30 LEADZ(I)
6.7.31 MAXVAL_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.32 MAXVAL_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)
6.7.33 MAXVAL_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.34 MINVAL_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.35 MINVAL_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)
6.7.36 MINVAL_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.37 PARITY(MASK,DIM)
6.7.38 PARITY_PREFIX(MASK,DIM,SEGMENT,EXCLUSIVE)
6.7.39 PARITY_SCATTER(MASK,BASE,INDX1,...,INDXn)
6.7.40 IPARITY_SUFFIX(MASK,DIM,SEGMENT,EXCLUSIVE)
6.7.41 POPCNT(I)
6.7.42 POPPAR(I)
6.7.43 PRODUCT_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.44 PRODUCT_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)
6.7.45 PRODUCT_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.46 SORT_DOWN(ARRAY,DIM)
6.7.47 SORT_UP(ARRAY,DIM)
6.7.48 SUM_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
6.7.49 SUM_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)
6.7.50 SUM_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)
三. HPF认可的扩展
7 数据映射方面认可的扩展
7.1 扩充的模型
7.2 新指令的属性形式的语法
7.3 REDISTRIBUTE 指令
7.4 REALIGN指令
7.5 DYNAMIC指令
7.6 重映射和子程序接口
7.7 向处理器子集的映射
7.8 指针
7.8.1 指针和子程序
7.9 派生类型部件的映射
7.10 新的分配格式
7.11 范围指令
7.12 阴影宽度说明
7.13 映射集合上的等价和偏序
7.14 显式接口
7.15 过程特性
8 数据和任务并行所认可的扩展
8.1 活动处理器集合
8.1.1 活动处理器怎样与数据映射相互作用
8.1.2 对活动处理器的其它约束
8.2 ON指令
8.2.1 ON指令的语法
8.2.2 ON指令的语义
8.2.3 ON指令的例子
8.2.4 应用于子程序调用的ON指令
8.3 RESIDENT指令
8.3.1 RESIDENT指令的例子
8.3.2 应用于子程序调用中的RESIDENT指令
8.4 TASK_REGION指令
8.4.1 TASK_REGION指令语法
8.4.2 TASK_REGION指令的语义
8.4.3 执行模型和用法
8.4.4 实现
8.4.5 2-D FFT的例子
9 异步I/O所认可的扩展
9.1 WAIT语句
10 HPF内部及库过程所认可的扩展
10.1 扩展内部过程的规格说明
10.1.1 ACTIVE_NUM_PROCS(DIM)
10.1.2 ACTIVE_PROCS_SHAPE()
10.1.3 TRANSPOSE(ARRAY,ORDER)
10.2 扩展库过程的规格说明
10.2.1HPF_ALIGNMENT(ALIGNEE,LB,UB,STRIDE,AXIS_MAP,IDENTIFY_MP,DYAMIC,NCOPIES)
10.2.2 HPF_DISTRIBUTION(DISTRIBUTEE,AXIS_TYPE,AXIS_INFO,PROCESSORS_RANK,PROCESSORS_SHAPE,PLB,PUB,PSTRIDE,LOW_SHADOW,HIGH_SHADOW)
10.2.3 HPF_TEMPLATE(ALIGNEE,TEMPLATE_RANK,LB,UB,AXIS_TYPE,AXIS_INFO,NUMBER_ALIGNED,DYNAMIC)
10.2.4 HPF_MAP_ARRAY(ARRAY,TEMPLATE_DIM,MAP_ARRAY)
10.2.5 HPF_NUMBER_MAPPED(ARRAY,PROCESSORS_DIM,NUMBER_MAPPED)
11.HPF外部函数认可的扩展
11.1 替代的外部函数模型:LOCAL和SERIAL
11.1.1 LOCAL模型
11.1.2 SERIAL模型
11.2 外部语言捆绑
11.2.1 参数控制
11.3 HPF捆绑
11.3.1 为HPF_LOCAL附加的特殊考虑
11.3.2 参数相联
11.3.3 HPF_SERIAL的特殊考虑
11.4 C语言捆绑
11.4.1 同C中所定义过程的接口的规格说明
11.4.2 C语言数据类型映射的规格说明
11.5 Fortran语言捆绑
11.6 Fortran 77语言捆绑
11.6.1 F77_LOCAL的特殊考虑
11.6.2 传递给F77_LOCAL过程的参数
11.6.3 F77_LOCAL程序设计例子
11.7 外部库
11.7.1HPF本地例程库
11.7.2从串行外部过程中进行的库访问
四. 附录
A HPF1.1子集
A.1 HPF1.1子集中的Fortran90特征
A.2 HPF1.1子集中的HPF1.1指令和语言扩展
B 对前面HPFF的致谢
B.1 HPFF致谢
B.2 HPFF94致谢