Thursday, May 14, 2009

intel Fortran 编译器 10.1 Linux*版入门 3

英特尔 ® Fortran 编译器 10.1 Linux* 版入门指南、安装指南和发行说明[3]
原始文档下载地址
http://www.intel.com/cd/software/products/apac/zho/358463.htm

英特尔® Fortran 编译器 10.1 Linux* 版发行说明
目录
概述
新增功能
系统要求
安装
已知问题
技术支持
文档
附加信息
免责声明与法律信息
概述
本 产品为 Linux* 软件开发人员提供各种工具,用于创建性能出众的 Fortran 应用程序。“英特尔® Fortran 编译器”是完整的 Fortran 95 语言编译器,它包含 Fortran 2003 标准中的许多功能,此外还有广泛的主流语言扩展。英特尔编译器通过对并行化与 OpenMP* 的支持,来支持多线程代码的开发。
产品内容
本产品有两个版本。
标准版包含以下组件:
  • 针对 IA-32 体系结构应用程序的“英特尔® Fortran 编译器”
  • 针对 IA-64 体系结构应用程序的“英特尔® Fortran 编译器”
  • 针对 Intel® 64 体系结构应用程序的“英特尔® Fortran 编译器”
  • 针对 IA-64 体系结构应用程序的“英特尔® 汇编器”
  • 英特尔® 调试器(请参阅单独的“发行说明”)
  • 实用程序
    英特尔® 编译器代码覆盖工具
    英特尔® 编译器测试优先级调整工具
  • 光盘文档
    为方便访问所有的文档,提供了一个文档索引。它位于 /doc/Doc_Index.htm

专业版包含“标准版”的所有内容,外加“英特尔® Math Kernel Library”,这个函数库包含许多经过高度优化且充分线程化的数学函数,适用于对性能要求极高的工程、科学以及金融等领域的应用。
备注:“英特尔® Fortran 编译器”的安装路径是 /opt/intel/fc/10.1.xxx,其中 xxx 代表 3 位数字的更新号。本文通篇使用 一词指代默认的安装路径。
“英特尔® Math Kernel Library”的安装独立于编译器。如需有关详细信息,请参阅“英特尔® Math Kernel Library 安装指南”。
要获取本产品中提供的各种工具的技术支持与产品更新,需要进行注册。如需了解如何注册,请参阅下面的技术支持部分。


兼容性
对 于使用 8.0 版之前的编译器(包括会创建 .mod 文件的那些编译器)编译的所有 Fortran 源代码,都必须重新编译。使用 8.0 之前的版本构建的第三方函数库也需要重新构建 - 如果使用的第三方函数库不支持“英特尔 Fortran”,请通过“英特尔® 首要支持”https://premier.intel.com 告诉我们是哪些。使用“英特尔 Fortran 8.0”或之后的版本构建的 Fortran 源代码无需使用 10.1 版重新编译。
另请参阅下文的“Fortran-C/C++ 混合语言应用程序的链接方面的变动”部分。


10.0 与 10.1 版的新增功能
以下部分讨论“英特尔 Fortran 编译器”自 10.0 版以来所引入的新功能与更改。对于“英特尔调试器”,请参阅单独的发行说明。
新增与更改过的命令行选项
下面列出自 9.1 版初次发行以来新增或更改过的命令行选项。如需有关这些选项的详细信息,请参阅编译器文档。
-assume [no]old_boz
控制二、八、十六进制的常数在作为 INT、REAL、DBLE 及 CMPLX 等内部函数的参数时如何进行处理。请参阅下面关于 Fortran 2003 行为的说明。(默认值:-assume noold_boz)
-assume [no]old_unit_star
控制与设备* 之间如何进行输入、输出,以及如何处理 ACCEPT、PRINT 以及 TYPE。请参阅下面关于 Fortran 2003 行为的说明。(默认值:-assume old_unit_star)
-assume protect_parens
确定优化器在对 REAL 与 COMPLEX 表达式进行求值时,是否会不重新组合各个运算来优先处理括号。(默认值:off)
-assume [no]realloc_lhs
确定赋值语句左侧的可分配对象是按照 Fortran 95/90 规则还是 Fortran 2003 规则进行处理。请参阅下面关于 Fortran 2003 行为的说明。(默认值:off)
-assume [no]std_mod_proc_name
确定是否允许模块过程的名称与用户外部符号名称冲突。请参阅下文备注。(默认值:off)
-axS
指定编译器生成“SSE4 矢量化编译器与媒体加速器”指令(针对将来支持这些指令的英特尔处理器)以及普通的 IA-32 体系结构代码。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-check [no]pointer
启用或禁用以下运行时检查:是否通过空指针进行访问,或是否访问未分配的 ALLOCATABLE 变量。(默认值:off)
-cxxlib-nostd
防止编译器链接标准的 C++ 库(默认值:off)
-diag-
控制诊断信息的显示(默认值:off)
-diag-dump
告诉编译器打印所有已经启用的诊断消息并停止编译(默认值:off)
-diag-enable sv[123]
启用“静态验证器”。(默认值:off)
-diag-enable sv-include
指定“静态验证器”也应考虑 include 文件。
-diag-file[=file]
将诊断分析的结果输出到一个文件。(默认值:off)
-diag-file-append[=file]
将诊断分析的结果附加到一个文件。(默认值:off)
-[no-]diag-id-numbers
告诉编译器通过使用诊断消息的标识号值来显示诊断消息(默认值:on)
-f[no-]align-functions[=n]
告诉编译器以最优字节边界对齐函数。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-fast
启用一组用于改善性能的选项。在此发行版中,这些选项已经改变。请参阅下文备注。
-f[no-]instrument-functions
确定是否在函数入口与出口点插入指令(默认值:off)
-f[no]-keep-static-consts
告诉编译器保留给源代码中未引用的变量分配的空间(默认值:off)
-fp-speculation=
告诉编译器推测浮点运算时的模式(默认值:fast)
-[no-]func-groups
如果启用评测信息,则启用或禁用函数组合功能(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-gdwarf-2
启用使用 DWARF2 格式生成调试信息的功能(默认值:off)
-heap-arrays[-]
指定应该在堆而不是堆栈上分配自动数组,以及为了临时计算而创建的数组。
-help [category]
显示所有可用的编译器选项或某一类编译器选项(默认值:off)
-ipo-jobs
指定要在“过程间优化”(IPO) 的链接阶段同时执行的命令(作业)数
-march=
告诉编译器生成针对指定的 CPU 的代码(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-msse[n]
告诉编译器生成针对特定英特尔® 处理器的代码(仅限 IA-32 与 Intel® 64 体系结构,默认值:IA-32 为 off,Intel® 64 体系结构为 -msse2)
-mtune=core2
告诉编译器选择为英特尔® 酷睿™2 处理器系列带来好处的优化(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-openmp-lib type
可供指定用于链接的 OpenMP* 运行时库。. (默认值:legacy)
-[no-]opt-multi-version-aggressive
告诉编译器主动使用多版本功能来检查指针别名与标量替换。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-opt-ra-region-strategy [=keyword]
选择寄存器分配器用于将每个例程划分成区域的方法。(仅限 IA-32 与 Intel® 64 体系结构,默认值:default)
-opt-streaming-stores keyword
启用生成数据流存储以进行优化的功能。(仅限 IA-32 与 Intel® 64 体系结构,默认值:auto)
-[no-]par-runtime-control
生成代码以便对具有符号循环边界的循环执行运行时检查。(默认值:off)
-par-schedule-[=n]
指定 DO 循环迭代的调度算法
-[no-]prefetch
启用或禁用预取插入优化。在 IA-32 体系结构上使用时需要指定 -xT。(仅限 IA-32 与 IA-64 体系结构,默认值:off)
-save-temps[-]
告诉编译器保存编译期间创建的中间文件(默认值:off)
-shared-intel
使英特尔提供的库可以动态链接(默认值:除 libguide 之外,所有的库都静态链接)
-shared-libgcc
动态链接 GNU libgcc 库。(默认值:off)
-static-intel
使英特尔提供的库可以静态链接(默认值:除 libguide 之外,所有的库都静态链接)
-static-libgcc
静态链接 GNU libgcc 库。(默认值:off)
-std 或 -stand
与 -std03 或 -stand f03 相同。请注意,这与之前的版本相比有所变化。(默认值:off)
-std03 或 -stand f03
告诉编译器针对不符合 Fortran 2003 标准的源代码语法发出警告。(默认值:off)
-tcheck []
指出要对 OpenMP 多线程应用程序执行的分析方法(默认值:off)
-tcollect
插入调用“英特尔® 踪迹收集器”API 的指令探针(默认值:off)
-[no-]unroll-aggressive
告诉编译器对包含小常数遍历计数的循环主动使用完整的展开。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-[no-]vec-guard-write
告诉编译器在矢量化循环中执行条件检查。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-xO
指 定编译器要生成 SSE3、SSE2 以及 SSE 指令,并且要针对含 SSE3 的英特尔® 奔腾® 4 处理器与英特尔® 至强® 处理器进行优化。生成的代码应该能够在并非英特尔制造但支持 SSE3、SSE2 以及 SSE 指令集的处理器上运行,如某些 AMD* 处理器。此值不启用在 S、T、P 等处理器值中启用的某些优化选项。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)
-xS
指 定编译器生成“SSE4 矢量化编译器与多媒体加速器”指令(针对将来支持这些指令的英特尔处理器)。此选项还允许编译器生成 SSSE3、SSE3、SSE2 以及 SSE 指令,并且它可以针对将来的英特尔处理器进行优化。(仅限 IA-32 与 Intel® 64 体系结构,默认值:off)


不再建议使用的和已经删除的命令行选项
如需有关不再建议使用(仍然起作用,但将在未来的版本中删除)或已经删除(不再支持)的命令行选项的详细信息,请参阅光盘文档中的 Compiler Options > Deprecated and Removed Compiler Options(编译器选项 > 不再建议使用的和已经删除的编译器选项)部分。
-fast 的含义已更改
-fast 选项是一种简便方式,用于指定通常可改善运行时性能的一组选项。如文档所述,随着时间的推移,这组选项可能会发生变化。在 10.0 版中,-fast 设置 -xT;而在较早的版本中,它设置 -xP。如果此变化对您而言不合适,则您必须单独指定所需的选项,而不是使用 -fast。如需有关详细信息,请参阅光盘文档上的 Compiler Options(编译器选项)部分。


-stand 的含义已更改
在 10.0 版中,指定 -stand 选项而后面不跟关键字时,其含义已经变为 -stand f03,即检查是否符合 Fortran 2003。通过指定 -stand f90 或 -stand f95,您可以选择检查是否符合 Fortran 90 或 Fortran 95。-std 是 -stand 的替代性拼写法。请注意,Intel® Fortran Language Reference(英特尔® Fortran 语言参考)仍然将 Fortran 2003 功能作为对 Fortran 95 的扩展来突出介绍。


在 Intel® 64 体系结构系统上,默认情况下 -xW 是启用的
在 Intel® 64 体系结构的系统上,默认情况下 -xW 是启用的;这相当于启用矢量化,您可能会看到显示的矢量化报告消息,这是使用以前的发行版所无法看到的。要禁用矢量化报告消息,请使用 -diag-disable vec。您仍然可以指定替代性选项,如 -xP 或 -axT。


替代性命令行选项
许多命令行选项都有老式的拼写,选项名称中的单词之间使用下划线 ("_") 而不是连字符 ("-") 来连接。老式拼写仍然是有效的替代性选项名称。


支持 gcc* OpenMP* 库
对于 10.1 版,您可以通过指定 -openmp-lib compat 来指定使用与 gcc 兼容的 OpenMP 库。如果您的应用程序包含某些使用 gcc 或 g++ 所构建的源模块,并且使用了 OpenMP,这可能正是所需要的。默认值是 -openmp-lib legacy,它使用英特尔提供的 OpenMP 库。


Fortran 2003 行为
Fortran 2003 定义作为对以前标准的扩展,或是较早的标准中未指定的语言功能的行为。尽管“英特尔 Fortran 编译器 10.1 版”尚不支持 Fortran 2003 的全部功能;但在某些情况中,此编译器现在选择的是 Fortran 2003 的行为,而较早的编译器版本选择的则是不同的行为。在其它某些情况中,此编译器的默认行为尚没有发生变化。这些情况如下文所述。


对可分配对象的赋值
在 Fortran 95 中,对可分配数组的赋值要求赋值语句左右两侧的形状与长度参数都要匹配。在 Fortran 2003 中,如果形状与长度参数不匹配,则取消分配所赋值的变量,然后重新分配到与赋值的表达式匹配的形状与长度参数。对于 10.1 版,编译器可以执行 Fortran 2003 指定的额外操作,但由于这些操作会明显影响性能,默认值是保留 Fortran 95 行为,即形状与长度参数要求匹配。如果希望采取 Fortran 2003 的行为,即在形状不匹配时取消并再次分配变量,请指定 -assume realloc_lhs


二、八、十六进制常数
在 Fortran 95 中,二、八、十六进制常数(“BOZ 常数”)只能出现在 DATA 语句中,并且限制为初始化标量整型变量。作为 Fortran 95 的扩展,“英特尔 Fortran 编译器”允许 BOZ 常数出现在任何上下文中,类型诠释由上下文来确定。Fortran 2003 对 BOZ 常数的用法进行了扩展,允许它们初始化任何数值类型,并且允许它们出现在 INT、REAL、DBLE 以及 CMPLX 内部函数的参数中。
BOZ 常数用法的 Fortran 2003 语义同以前“英特尔 Fortran”的扩展版相同,但 BOZ 常数作为 INT、REAL、DBLE 以及 CMPLX 等函数的参数的情况除外。按照 Fortran 2003 的规定,在这些上下文中,BOZ 常数诠释为二进制值,也就是直接作为内部函数返回的数据类型进行诠释;而在以前的“英特尔 Fortran”诠释中,BOZ 常数先是视作有符号整型值,随后再进行转换。
例如:
print *, real(Z'40490FDB')
按照旧式的行为 (-assume old_boz),打印结果是 1.0785300E+09;而按照新的行为 (-assume noold_boz),打印结果是 3.141593。
对于 10.0 版,“英特尔 Fortran”的默认行为是 Fortran 2003 的行为,即传递二进制值而不进行转换。如果应用程序需要旧式的行为,请使用 -assume old_boz 选项进行编译。


默认 I/O 设备 *
在“英特尔 Fortran 编译器”中的默认情况下,同 ACCEPT、PRINT 以及 TYPE 语句使用的 I/O 设备* 与隐含设备关联的设备号和可以在 OPEN 语句中指定的设备号(如设备 5 或 6)不同。Fortran 2003 要求程序员能够 OPEN 这些默认设备,这与当前“英特尔 Fortran”的行为不兼容。
在 10.0 版中,已经添加了 -assume [no]old_unit_star 编译命令行选项以控制此行为。默认值 -assume old_unit_star 对于不同于设备 5 和 6 的设备,保持当前与过去的行为。如果希望使用 Fortran 2003 的行为,或如果将使用 Fortran 2003 内部模块 ISO_FORTRAN_ENV 及其定义的 INPUT_UNIT 与 OUTPUT_UNIT 常数,请指定 -assume noold_unit_star 让设备*(以及 ACCEPT、PRINT 和 TYPE)使用设备 5(输入)和 6(输出)。
此行为的默认值在将来的发行版中可能会改变。


RECL= 无格式文件的单位
在 10.0 版中,同“英特尔 Fortran”8.x 与 9.x 版中一样,打开文件进行无格式 I/O 时,在 OPEN 中为 RECL= 关键字指定的值是四字节单位,即默认整数的大小。以前的 Fortran 标准规定,RECL= 单位“独立于实现”,但 Fortran 2003“建议”使用单字节。要将无格式 I/O 的 RECL= 单位指定为字节,请使用现有的编译器选项 -assume byterecl。如果您的应用程序使用 ISO_FORTRAN_ENV 内部模块中的 FILE_STORAGE_SIZE 命名参数,则也必须使用此选项。


.XOR。内部函数操作符
作为扩展,“英特尔 Fortran”编译器定义了内部函数操作符 .XOR.。由于内部函数操作符具有与用户自定义操作符不同的优先级,这会导致与相同名称的用户自定义操作符发生冲突。如果您定义自己的操作符 .XOR.,则可以指定 -assume no_old_xor 以禁用编译器将 .XOR. 当作内部函数操作符的定义。


模块过程与变量的全局符号
“英特尔 Fortran”编译器通过将模块名称与过程或变量名称合到一起(以字符串 "_mp_" 分隔),然后应用标准的名称修饰规则,来构造模块过程与变量的全局名称。例如,MYMOD 模块中的 SUB 过程的全局名称为 MYMOD_mp_SUB。此方法可能会与名称中包含 _mp_ 字符串的用户过程产生冲突。如果您的应用程序发生这种冲突,请指定 -assume noold_mod_proc_name 选项,它会将分隔符的大小写切换为与默认名称的大小写相反。您必须为整个应用程序指定相同的选项,以使所有名称保持一致。


数据流 I/O(Fortran 2003 功能)
对于 10.1 版,编译器支持 Fortran 2003 数据流 I/O 功能,它提供按照字节流来读取和写入文件的能力。要启用数据流访问,请打开指定 ACCESS='STREAM' 的文件。READ 与 WRITE 语句支持 POS= 关键字,可以指定文件位置。如需有关详细信息,请参阅“英特尔 Fortran 编译器语言参考”。


RECORDTYPE='STREAMxx' 的行为改变
作为扩展,“英特尔 Fortran”支持 OPEN 语句中的 RECORDTYPE 值 STREAM、STREAM_CR 及 STREAM_LF。在以前的版本中,文档与实现都不正确,并且两者不一致。旧的行为如下:
RECORDTYPE='STREAM'
写入时,将 LF 用作行终结符。输入时,不识别分隔符。
RECORDTYPE='STREAM_CR'
写入时,将 CR-LF 用作行终结符。输入时,不识别分隔符。
RECORDTYPE='STREAM_LF'
写入时,将 CR-LF (Windows)、LF(Linux* 与 Mac OS*)用作行终结符。输入时,不识别分隔符
此外,如果指定了 CARRIAGECONTROL='NONE',则行为已发生改变。
在 10.1 版中,行为改变如下:
RECORDTYPE='STREAM'
不写入或读取分隔符。类似于 Fortran 2003 的数据流 I/O
RECORDTYPE-'STREAM_CR'
将 CR 当作记录分隔符进行写入和读取
RECORDTYPE='STREAM_LF'
将 LF 当作记录分隔符进行写入和读取
按如下所示定义新选项:
RECORDTYPE='STREAM_CRLF'
将 CR-LF 对当作记录分隔符进行读取和写入
CARRIAGECONTROL 不再影响 RECORDTYPE 的行为。
在 Windows 上,默认格式的记录分隔符是 CR-LF;在 Linux 与 Mac OS 上则是 LF。利用这些更改,现在可以使用相同的方式在所有三种操作系统上指定特定的分隔符类型。
如果希望在无须编辑源代码的情况下更改应用程序的运行时行为,则可以定义一个新的环境变量 FOR_FMT_TERMINATOR。此环境变量的值采用以下形式:
mode[:ulist][;mode[:ulist]...]
其中 mode 是 CR、LF 或 CRLF 之一,ulist 是应用该模式的可选设备号范围,例如,2,17-20, 91


Fortran 2003 的新增功能
自 9.1 版最初发行以来,Fortran 2003 标准中已经添加了以下功能。其中某些功能第一次出现在 9.1 版的更新中。如需有关详细信息,请参阅 Intel® Fortran Language Reference(英特尔® Fortran 语言参考)。
ASYNCHRONOUS 属性和语句
BIND(C) 属性和语句
PROTECTED 属性和语句
VALUE 属性和语句
指针对象的 INTENT
赋值语句右侧在形状或长度上存在差异时,重新分配其左侧的可分配变量(要求使用 "assume realloc_lhs" 选项)
FLUSH 语句
WAIT 语句
OPEN 的 ACCESS='STREAM' 关键字值
OPEN 与数据传输语句的 ASYNCHRONOUS 关键字
INQUIRE 与数据传输语句的 ID 关键字
INQUIRE 与数据传输语句的 POS 关键字
INQUIRE 的 PENDING 关键字
用户自定义操作符的重命名
IMPORT 语句
USE 语句的 INTRINSIC 与 NON_INTRINSIC 关键字
ISO_C_BINDING 内部模块
用于 COMMAND_ARGUMENT_COUNT 内部过程的 ISO_FORTRAN_ENV 内部模块(必须使用 /assume:byterecl 与 /assume:noold_unit_star 进行编译,以便得到正确的值)。
GET_COMMAND 内部过程
GET_COMMAND_ARGUMENT 内部过程
GET_ENVIRONMENT_VARIABLE 内部过程
IS_IOSTAT_END 内部过程
IS_IOSTAT_EOR 内部过程
MOVE_ALLOC 内部过程
NEW_LINE 内部过程
SELECTED_CHAR_KIND 内部过程


其它语言功能
如需有关以下新增语言功能的详细信息,请参阅 Intel® Fortran Language Reference(英特尔® Fortran 语言参考)。
ASSUME_ALIGNED 指示
LOOP_COUNT 指示
MEMORYTOUCH 指示
OPTIMIZE 指示
MULT_HIGH_SIGNED 内部过程


用于指定默认记录长度的新环境变量
现提供两个新的函数变量,可用于更改应用程序的运行时行为:FORT_FMT_RECL 与 FORT_UFMT_RECL。
FORT_FMT_RECL 用于给为进行有格式 I/O 而打开的所有 Fortran 设备指定默认的 RECL(记录长度)值。如果定义为十进制无符号整型值,则使用该环境变量值时,仿佛该值是在 RECORDTYPE 不是 'FIXED' 的情况下为 OPEN 的 RECL= 指定的那样。它最常见的用途是更改表式输出的行长度,默认值是 80 列。
FORT_UFMT_RECL 用于给为进行无格式 I/O 而打开的所有 Fortran 设备指定默认的 RECL(记录长度)值。如果定义为十进制无符号整型值,则使用该环境变量值时,仿佛该值是在 RECORDTYPE 不是 'FIXED' 的情况下为 OPEN 的 RECL= 指定的那样。它最常见的用途是更改使用 RECORDTYPE='SEGMENTED' 打开的文件的最大段长,默认值是 2040 字节。


OpenMP* 应用程序的 KMP_AFFINITY 环境变量
KMP_AFFINITY 环境变量可以在 OpenMP* 应用程序中用于指定应该如何将执行线程绑定到系统中的处理器上。此设置的效果是在程序执行期间按照线程的创建顺序,以轮流的方式将每个线程绑定到系统中的处理器核心。KMP_AFFINITY 的值应该采用以下形式:
compact,
其中 是一个非负整数。例如:
compact,1
参数指定连续线程的绑定核心在机器拓扑图(用二叉树表示)中的间隔。级别零表示,对于启用了“英特尔® 超线程技术”的处理器,线程将绑定到处理器的连续线程上下文;如果未启用,则绑定到连续的处理器。从线程上下文到核心,再到封装(处理器),级别依次增加一级。此设置仅有英特尔公司提供的处理器才支持,并且所在的系统必须使用支持线程绑定的操作系统。


改善的并行器与矢量器
此版本采用一个完全重新设计的优化器,在包含内存与循环优化的 O2 与 O3 优化级别,优化器会将并行化(所有体系结构)与矢量化(IA-32 与 Intel® 64 体系结构)的功能集成到一起。
通过采取以下措施可以显著改善性能:
生成更高效的多线程代码
生成更高效的 SIMD 代码
增强的循环转换


新增与改进的高级循环转换优化报告
“循环转换 (HLO) 优化”报告可以告诉您编译器为什么无法对某组循环进行循环交换,并提示是否可通过更改源代码来消除所报告的瓶颈。这些报告现已经过改进,可以提供更详细的信息,并且也更容易理解。


静态验证器
“静态验证器”是一个新的编译器功能,可跨越多个源文件对程序执行静态分析。它可以检测不同种类的缺陷,以及用户代码中语言功能的可疑或不一致的用法,并按照严重程度进行报告。“静态验证器”可以理解 C/C++ 与 Fortran 代码,也可以分析 OpenMP 指示。


Fortran 2003 功能摘要
“英特尔 Fortran 编译器”支持最新版 Fortran 标准(即 Fortran 2003)中的许多新功能。在将来的版本中,将出现更多的 Fortran 2003 功能。当前编译器支持的 Fortran 2003 功能包括:
Fortran 字符集已扩展到包含 8 位 ASCII 字符 ~ \ [ ] ` ^ { } # @
名称最长可达 63 个字符
语句最长可达 256 行
允许方括号 [ ] 代替 (/ /) 用作数组构造器的分隔符
命名为 PARAMETER 常数可以用作复常数的一部分
可分配的衍生类型组分
ASYNCHRONOUS 属性和语句
BIND(C) 属性和语句
PROTECTED 属性和语句
VALUE 属性和语句
VOLATILE 属性和语句
指针对象的 INTENT 属性
赋值语句右侧在形状或长度上存在差异时,重新分配其左侧的可分配变量(要求使用 "assume realloc_lhs" 选项)
在所有的 I/O 语句中,以下数值可以是任何类型:UNIT=、IOSTAT=
FLUSH 语句
WAIT 语句
OPEN 的 ACCESS='STREAM' 关键字
OPEN 与数据传输语句的 ASYNCHRONOUS 关键字
INQUIRE 与数据传输语句的 ID 关键字
数据传输语句的 POS 关键字
INQUIRE 的 PENDING 关键字
以下 OPEN 数值可以是任何类型:RECL=
以下 READ 与 WRITE 数值可以是任何类型:REC=、SIZE=
以下 INQUIRE 数值可以是任何类型:NEXTREC=、NUMBER=、RECL=、SIZE=
在以下情况中允许执行递归 I/O:除自己的内部文件之外,新启动的 I/O 不会修改其它任何内部文件
IEEE 无穷大与 NaN 按照 Fortran 2003 规定的格式化输出进行显示
在 I/O 格式中,如果 P 编辑描述符后面跟一个重复说明符,则编辑描述符后面的逗号可有可无
USE 中用户自定义操作符的重命名
USE 中的 INTRINSIC 与 NON_INTRINSIC 关键字
IMPORT 语句
可分配的虚拟参数
可分配的函数返回值
COMMAND_ARGUMENT_COUNT 内部函数
GET_COMMAND 内部函数
GET_COMMAND_ARGUMENT 内部函数
GET_ENVIRONMENT_VARIABLE 内部函数
IS_IOSTAT_END 内部函数
IS_IOSTAT_EOR 内部函数
MOVE_ALLOC 内部函数
NEW_LINE 内部函数
SELECTED_CHAR_KIND 内部函数
以下内部函数可接受可选的 KIND= 参数:ACHAR、COUNT、IACHAR、ICHAR、INDEX、LBOUND、LEN、LEN_TRIM、MAXLOC、MINLOC、 SCAN、SHAPE、SIZE、UBOUND、VERIFY
ISO_C_BINDING 内部模块
ISO_FORTRAN_ENV 内部模块

在此发行版中,启用“静态验证器”时,不会调用链接器,因此不会产生可执行文件或静态/动态链接库,作为调用“静态验证器”的结果而产生的目标文件无效,不应用于生成实际的可执行文件或静态/动态链接库。当前用法模型是添加“静态验证器”作为替代性的构建选项,以产生诊断报告。
“静态验证器”不能与交叉文件过程间优化 (/Qipo) 结合使用。
如需有关详细信息,请参阅光盘文档中关于 Building Applications > Error Handling > Handling Compile Time Errors > using Static Verification Diagnostic Options(构建应用程序 > 错误处理 > 处理编译时错误 > 使用静态验证诊断选项)的部分。


(http://blog.sina.com.cn/s/blog_51ffcfc301009utu.html~type=v5_one&label=rela_nextarticle )

No comments:

Post a Comment