4. Solaris Studio Fortran 的功能与差异
5. FORTRAN 77 兼容性:迁移到 Solaris Studio Fortran
B.1 Oracle Solaris Studio 12.2 Fortran 发行版
B.2 Sun Studio 12 Update 1 Fortran 发行版
B.5 Sun Studio 10 Fortran 发行版:
针对 x86 Solaris 平台发行的 Fortran 95 编译器:
此发行版 Solaris Studio 实现了在 Solaris OS x86 平台上使用 Fortran 编译器。使用 -xtarget 值(generic、native、386、486、pentium、pentium_pro、pentium3 或 pentium4)进行编译,可以在 Solaris x86 平台上生成可执行文件。x86 平台上的缺省值为 -xtarget=generic。
以下 f95 功能尚未在 x86 平台上实现,只能在 SPARC 平台上使用:
区间运算(编译器选项 -xia 和 -xinterval)
四倍(128 位)运算(例如 REAL*16)
IEEE 内部模块 IEEE_EXCEPTIONS、IEEE_ARITHMETIC 和 IEEE_FEATURES
sun_io_handler 模块
并行化选项(如 -autopar 和 -openmp)。
以下 f95 命令行选项只能在 x86 平台上使用,不能在 SPARC 平台上使用: -fprecision、-fstore 和 -nofstore
以下 f95 命令行选项只能在 SPARC 平台上使用,不能在 x86 平台上使用:-xcode、-xmemalign、-xprefetch、-xcheck、-xia、-xinterval、-xipo、-xjobs、-xlang、-xlinkopt、-xloopinfo、-xpagesize、-xprofile_ircache、-xreduction、-xvector、-depend、-openmp、-autopar、-vpara、-XlistMP。此外,在 x86 平台上,-fast 增加了 -nofstore。
提高了运行时性能:
使用此发行版,大多数应用程序的运行时性能会显著提高。为获得最佳效果,请使用较高的优化级别 -xO4 或 -xO5 进行编译。在这些优化级别上,编译器现在可以内联所包含的过程,以及那些带假定形状参数、可分配参数或指针参数的过程。
Fortran 2003 命令行内部函数:
Fortran 2003 标准引入了三个新的内部函数,用来处理命令行参数和环境变量。这三个函数已在此发行版的 f95 编译器中实现。新增的内部函数包括:
GET_COMMAND(command, length, status)
以 command 返回调用该程序的整个命令行。
GET_COMMAND_ARGUMENT(number, value, length, status)
以值返回命令行参数。
GET_ENVIRONMENT_VARIABLE(name, value, length, status, trim_name)
返回环境变量的值。
新增和更改的命令行选项:
以下 f95 命令行选项是此发行版中新增的选项。有关详细信息,请参见第 3 章。
-xipo_archive={ none | readonly | writeback }
允许跨文件优化以包括归档 (.a) 库。(仅适用于 SPARC)
-xprefetch_auto_type=[no%]indirect_array_access
为间接访问的数组生成间接预取。(仅适用于 SPARC)
-xprofile_pathmap=collect_prefix:use_prefix
设置配置文件数据文件的路径映射。如果分析所用的目录不是以前使用 -xprofile=collect 进行编译时所用的目录,请将 -xprofile_pathmap 选项和 -xprofile=use 选项一起使用。
在此发行版的 f95 中,以下命令行选项的缺省值已更改。
-xprefetch 的缺省值为 -xprefetch=no%auto,explicit。
-xmemalign 的缺省值为 -xmemalign=8i;当使用其中一个 -xarch=v9 选项进行编译时,缺省值为 -xmemalign=8f。
当使用其中一个 -xarch=v9 选项进行编译时,-xcode 的缺省值为 abs44。
要使用以前的编译器版本中使用的缺省值进行编译,请明确指定以下选项:
-xarch=v8 -xmemalign=4s -xprefetch=no(32 位编译);-xcode=abs64 -xprefetch=no(64 位编译)。
缺省 SPARC 体系结构是 V8PLUS:
缺省 SPARC 架构不再是 V7。在此 Solaris Studio 9 发行版中,对 -xarch=v7 的支持有限。新的缺省值为 V8PLUS (UltraSPARC)。使用 -xarch=v7 进行编译将被作为使用 -xarch=v8 进行编译来处理,因为 Solaris 8 操作系统仅支持 -xarch=v8 或更高版本。
要在 SPARC V8 系统(例如,SPARCStation 10)上进行部署,请使用 -xarch=v8 显式编译。提供的系统库将在 SPARC V8 架构上运行。
要在 SPARC V7 系统(例如,SPARCStation 1)上进行部署,请使用 -xarch=v7 显式编译。提供的系统库将使用 SPARC V8 指令集。对于 Solaris Studio 9 发行版,只有 Solaris 8 OS 支持 SPARC V7 体系结构。如果遇到 SPARC V8 指令,该 OS 将在软件中解释该指令。程序将会运行,但性能会下降。
OpenMP: 增大了最大线程数:
OMP_NUM_THREADS 和多任务库的最大线程数已从 128 增至 256。
OpenMP: 自动确定变量的作用域:
此发行版的 Fortran 编译器中实现了可进行共享内存并行编程的 OpenMP API,因而能够在并行区域中自动确定变量的作用域。有关详细信息,请参见《OpenMP API 用户指南》。(此版本只在 SPARC 平台上实现了 OpenMP。)