Oracle® Solaris Studio 12.4:Fortran 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

Fortran 指令摘要

本附录汇总了 f95 Fortran 编译器可识别的指令:

  • 通用 Fortran 指令

  • Sun 并行化指令

  • Cray 并行化指令

  • OpenMP Fortran 95 指令、库例程和环境

C.1 通用 Fortran 指令

指令部分对 f95 接受的通用指令进行了说明。

表 C-1  通用 Fortran 指令摘要
格式
!$PRAGMA keyword ( a [ , a ] … ) [ , keyword ( a [ , a ] … ) ] ,…
!$PRAGMA SUN keyword ( a [ , a ] … ) [ , keyword ( a [ , a ] … ) ] ,…
第 1 列中的注释指示符可以是 cC!*。(在这些示例中,我们使用了 !f95 自由格式必须使用 !。)
C 指令
!$PRAGMA C(list)
将一系列外部函数的名称声明为 C 语言例程。
IGNORE_TKR 指令
!$PRAGMA IGNORE_TKR {name {, name} ...}
在解析特定调用时,编译器会忽略在通用过程接口中出现的指定哑元参数名称的类型、种类和等级。
UNROLL 指令
!$PRAGMA SUN UNROLL=n
建议编译器将下面的循环解开为指定的长度 n
WEAK 指令
!$PRAGMA WEAK(name[=name2])
name 声明为弱符号,或者声明为 name2 的别名。
OPT 指令
!$PRAGMA SUN OPT=n
将子程序的优化级别设置为 n
PIPELOOP 指令
!$PRAGMA SUN PIPELOOP[=n]
断言循环中在间隔为 n 的迭代之间存在依赖性。
PREFETCH 指令
!$PRAGMA SUN_PREFETCH_READ_ONCE (name)
!$PRAGMA SUN_PREFETCH_READ_MANY (name)
!$PRAGMA SUN_PREFETCH_WRITE_ONCE (name)
!$PRAGMA SUN_PREFETCH_WRITE_MANY (name)
请求编译器为名称引用生成预取指令。(需要使用 -xprefetch 选项,缺省情况下启用该选项。编译时使用 —xprefetch=no 可以禁用预取指令。目标体系结构也必须支持预取指令,而且编译器优化级别必须设置为大于 —xO2。)
ASSUME 指令
!$PRAGMA [BEGIN} ASSUME (expression [,probability])
!$PRAGMA END ASSUME
断言编译器可假定程序中某些点处的条件为真。

C.2 特殊的 Fortran 指令

下列指令仅用于 f95。有关详细信息,请参见FIXED 和 FREE 指令

表 C-2  特殊的 Fortran 指令
格式
!DIR$ 指令: 初始行
!DIR$& ...:续行
对于固定格式源代码,也可以接受 C 作为指令指示符:
CDIR$ 指令...
该行必须在第 1 列开始。对于自由格式的源文件,该行之前可以有空格。
FIXED/FREE 指令
!DIR$ FREE!DIR$ FIXED
这些指令指定指令后面的行的源代码格式。它们适用于所在源代码文件的其余部分,或者在遇到下一个 FREEFIXED 指令之前的部分。
IVDEP
!DIR$ IVDEP
断言以下 DOFORALLWHERE 循环不含循环附带的依赖性,并且可以进行优化。-xivdep 选项确定的解释。请参见IVDEP 指令

C.3 Fortran OpenMP 指令

Oracle Solaris Studio Fortran 编译器支持 OpenMP 3.1 Fortran API。-openmp 编译器标志允许使用这些指令。(请参见–xopenmp[={parallel|noopt|none}])。

有关完整的详细信息,请参见《OpenMP API 用户指南》。