本书与配套的《Fortran 编程指南》中介绍的 SunTM Studio Fortran 95 编译器 f95 可在 SPARC®、UltraSPARC® 和 x64/x86 平台上的 SolarisTM 操作环境下使用。此编译器符合发布的 Fortran 语言标准,并提供很多扩展的功能,其中包括多处理器并行化、高级的优化代码编译以及混合的 C/Fortran 语言支持。
f95 编译器还提供接受大多数传统 Fortran 77 源代码的 Fortran 77 兼容性模式。不再包含单独的 Fortran 77 编译器。有关 FORTRAN 77 兼容性和迁移问题的信息,请参见第 5 章。
f95 符合 ISO/IEC 1539-1:1997 Fortran 标准文档第一部分的要求。
浮点运算基于 IEEE 标准 754-1985 和国际标准 IEC 60559:1989。
f95 提供了对 SPARC 和 x86 系列处理器体系结构(Solaris 和 Linux (x86) 平台上的 UltraSPARC、SPARC64、AMD64、Pentium Pro 和 Xeon Intel®64)优化开发功能的支持。
Sun Studio 编译器符合 OpenMP 2.5 共享内存并行化 API 规范。有关详细信息,请参见《OpenMP API 用户指南》。
在本文档中,“标准”是指与上面列出的标准版本相一致。“非标准”或“扩展”是指超出这些标准版本的功能。
负责标准的一方可能会不时地修订这些标准。可能会修订或替代这些编译器遵循的适用标准的版本,因而导致 Sun Fortran 编译器将来版本中的功能与先前版本不兼容。
Sun Studio Fortran 95 编译器提供以下功能和扩展:
在例程中对参数、公共区等进行全局程序一致性检查。
优化多处理器系统的自动和显式循环并行化。
VAX/VMS Fortran 扩展,其中包括:
结构、记录、联合和映射
递归
OpenMP 2.5 并行化指令。
全局、窥孔和潜在的并行化优化可产生高性能的应用程序。基准测试表明优化的应用程序的运行速度比未优化的代码快得多。
通用调用惯例允许将使用 C 或 C++ 编写的例程与 Fortran 程序结合使用。
UltraSPARC 和 AMD64 平台上支持 64 位的 Solaris 环境。
使用 %VAL 按值进行调用。
Fortran 77 和 Fortran 95 程序与对象二进制文件之间的兼容性。
区间运算编程。
某些 Fortran 2003 功能,其中包括流 I/O。
有关每个软件发行版的编译器中添加的新功能和扩展功能的详细信息,请参见附录 B。
以下实用程序可为使用 Fortran 进行软件程序开发提供帮助:
Sun Studio 性能分析器-单线程和多线程应用程序的深层性能分析工具。请参见 analyzer(1)。
asa-此 Solaris 实用程序是一个 Fortran 输出过滤器,用于打印第一列中包含 Fortran 回车控制符的文件。可使用 asa 将按照 Fortran 回车控制惯例设置格式的文件转换为按照 UNIX 行打印机惯例设置格式的文件。请参见 asa(1)。
fdumpmod-显示包含在文件或归档文件中的模块名称的实用程序。请参见 fdumpmod(1)。
fpp-Fortran 源代码预处理程序。请参见 fpp(1)。
fsplit-此实用程序将一个包含几个例程的 Fortran 文件拆分成几个文件,每个文件包含一个例程。可使用 FORTRAN 77 或 Fortran 95 源文件上的 fsplit。请参见 fsplit(1)。
可以使用以下调试实用程序:
Sun 性能库TM是一个用于计算线性代数和傅立叶变换的优化子例程及函数的库。它基于一般通过 Netlib (www.netlib.org) 提供的标准库 LAPACK、BLAS1、BLAS2、BLAS3、FFTPACK、VFFTPACK 和 LINPACK。
与标准库版本相比,Sun 性能库中的每个子程序执行相同的操作并且具有相同的接口,但通常这些子程序的速度要快得多且准确得多,这些子程序可以用于多处理环境中。
有关详细信息,请参见 performance_library 自述文件和《Sun 性能库用户指南 》。(性能库例程的手册页位于第 3P 节。)
Fortran 95 编译器提供编译器标记 -xia 和 -xinterval 以启用新的语言扩展,并生成相应的代码以执行区间运算。有关详细信息,请参见《Fortran 95 区间运算编程指南》。(只有 SPARC/UltraSPARC 平台支持区间运算功能。)
联机手册 (man) 页提供了关于命令、函数、子例程或这些项的集合的文档。应将用户的 MANPATH 环境变量设置为安装 Sun Studio 手册的目录路径,以便访问 Sun Studio 手册页。在 Solaris 中,通常为 /opt/SUNWspro/man。
可以通过运行以下命令来显示手册页:
demo% man topic |
在整个 Fortran 文档中,出现的手册页参考带有主题名称和手册章节号:可使用 man f95 访问 f95(1)。例如,可在 man 命令中使用 -s 选项来访问 ieee_flags(3M) 指示的其他部分:
demo% man -s 3M ieee_flags |
Fortran 库例程是在手册页第 3F 节中介绍的。
下面列出了面向 Fortran 用户的手册页:
f95(1) |
Fortran 95 命令行选项 |
analyzer(1) |
Sun Studio 性能分析器 |
asa(1) |
Fortran 回车控制打印输出后处理器 |
dbx(1) |
命令行交互调试器 |
fpp(1) |
Fortran 源代码预处理器 |
cpp(1) |
C 源代码预处理器 |
fdumpmod(1) |
显示模块 (.mod) 文件的内容 |
fsplit(1) |
预处理器将 Fortran 源例程分成单个文件 |
ieee_flags(3M) |
检查、设置或清除浮点异常位 |
ieee_handler(3M) |
处理浮点异常 |
matherr(3M) |
数学库错误处理例程 |
ild(1) |
目标文件的增量链接编辑器 |
ld(1) |
目标文件的链接编辑器 |
Sun Developer Network (SDN) 门户网站 (http://developers.sun.com/sunstudio/) 上的自述文件页面介绍了新增功能、软件不兼容性、错误以及手册印刷后发现的信息。这些自述文件页面是门户网站上此发行版文档的一部分,也可以从已安装软件包含的 HTML 文档索引(位于 file:/opt/SUNWspro/docs)链接到这些页面。
表 1–1 重要自述文件页面
自述文件页面 |
描述... |
---|---|
fortran_95 |
此版本 Fortran 95 编译器 f95 的新增功能、修改的功能、已知限制和文档勘误表。 |
fpp_readme |
fpp 功能概述 |
interval_arithmetic |
f95 中的区间运算功能概述 |
math_libraries |
可用的优化和专用数学库。 |
profiling_tools |
使用性能配置工具 prof、gprof 和 tcov。 |
runtime_libraries |
可依照最终用户许可协议的条款重新分发的库和可执行文件。 |
performance_library |
Sun 性能库概述 |
openmp |
OpenMP 并行化 API 中的新增功能和已更改的功能 |
可使用 -xhelp=readme 命令行选项来显示每个编译器自述文件页面的 URL。例如,命令:
% f95 -xhelp=readme |
显示用于查看 SDN 门户网站上此发行版 fortran_95 自述文件的 URL。
可通过调用编译器的 -help 选项来查看 f95 命令行选项的简短描述(如下所示):
%f95 -help=flags Items within [ ] are optional. Items within < > are variable parameters. Bar | indicates choice of literal values. -someoption[={yes|no}] implies -someoption is equivalent to -someoption=yes _______________________________________________________________ -a Collect data for tcov basic block profiling -aligncommon[=<a>] Align common block elements to the specified boundary requirement; <a>={1|2|4|8|16} -ansi Report non-ANSI extensions. -autopar Enable automatic loop parallelization -Bdynamic Allow dynamic linking -Bstatic Require static linking -C Enable runtime subscript range checking -c Compile only; produce .o files but suppress linking ...etc. |