Oracle® Solaris Studio 12.4 新增功能

退出打印视图

更新时间: 2014 年 12 月
 
 

编译器通用的新增和更改的功能

下面列出了自上一发行版起对 C、C++ 和 Fortran 编译器进行的更改。可在编译器手册页中找到详细信息。特定于 C++ 编译器的更改已在Chapter 2, C++ 编译器中进行详细介绍。

新硬件上的应用程序性能

每一个 Oracle Solaris Studio 发行版都包括对 Oracle Sun 硬件服务器的性能改进。此发行版中包括对 SPARC T5、SPARC M5、SPARC M6、SPARC M10 及 Intel Ivy Bridge 和 Haswell 编译器的扩展支持以及库性能改进(首先在特定于 Oracle Solaris Studio 12.3 1/13 平台的增强功能发行版中提供)。

  • x86 上针对 Ivy Bridge 和 Haswell 处理器的新 –xarch–xchip–xtarget 值。

  • 针对 SPARC T5、M5、M6 和 M10+ 处理器的新 –xarch–xchip–xtarget 值。

  • 支持 Ivy Bridge 和 Haswell 汇编程序指令。

  • 支持 Ivy Bridge 和 Haswell 内部函数(可在 solstudio-install-dir/lib/compilers/include/cc/sys</immintrin.h 中找到)。

  • x86 和 x64 体系结构上 –xarch=generic 的缺省值设置为 sse2。有关更多信息,请参见x86 缺省浮点行为的更改

x86 缺省浮点行为的更改

与以前的发行版相比较,Oracle Solaris Studio 12.4 在 x86 系统上使用缺省编译器值编译的程序中的浮点计算结果可能会稍有不同。即使在相同的硬件和操作系统上,也可能会得到不同的结果。这是因为对于所有地址空间模型和平台而言,现在的缺省指令集体系结构都是 SSE2。

在 Oracle Solaris Studio 12.4 和以前的发行版中,针对 32 位 Oracle Solaris 的缺省地址空间模型是 –m32。在 Linux 上,对于 64 位硬件的缺省值为 –m64。在所有平台上,您都可以分别使用 –m32–m64 来对 32 位地址空间模型或 64 位地址空间模型进行编译。

编译器使用 –xarch 选项优化代码,以确定硬件中实现了哪些指令并因此适合进行代码生成。在以前的 Oracle Solaris Studio 发行版中,–m32 对应的缺省值是 –xarch=386–m64 对应的缺省值是 –xarch=sse2

对于 32 位寻址的 x86,如果未使用 –xarch–xnative–fast 指定或隐式指定任何代码生成选项,则代码生成选项将是 –xarch=sse2 而不是 –xarch=386。因此,使用浮点运算并且使用缺省 –xarch 编译的程序可能会生成不同的浮点结果。

新 x86 缺省 –m32 –xarch=sse2 与以前的缺省 –m32 –xarch=386 实现相同的 ABI。浮点操作数和结果在 x87 浮点寄存器中传递。但是,以下单精度和双精度浮点操作通常在 sse2 寄存器中执行。

+
-
*
/
sqrt
convert

仍将 x87 寄存器用于长双精度操作和硬件初等超越函数求值。

其他编译器更改

  • 在 x86 上支持 –xlinkopt。针对为现代 Intel 处理器优化的大型企业应用程序进行了模块间、过程代码间排序优化。对于大型应用程序,在充分优化的二进制文件上可实现高达 5% 的性能提升。

  • x86 的新编译器选项:–preserve_argvalues 将基于寄存器的函数参数的副本保存在堆栈中。

  • 增强的 – xs 选项用于控制可执行文件大小与保留对象文件的需求之间的平衡以便进行调试。

  • 在 Linux 上支持 –xanalyze–xannotate

  • 支持 –fopenmp 作为 –xopenmp=parallel 的同义词。

  • 支持 SPARC M10 值 –xchip=sparc64x–xtarget=sparc64x–xarch=sparcace

  • 支持 SPARC M10+ 值 –xchip=sparcxplus–xtarget=sparc64xplus–xarch=sparcaceplus

  • 支持 SPARC M10+ 处理器通用的 SPARC 指令集扩展的 –xarch=sparc4b–xarch=sparc4c

  • 支持 x86 平台上的 Ivy Bridge 值 –xchip=ivybridge–xtarget=ivybridge–xarch=avx_i

  • 支持 x86 平台上的 Haswell 值 –xchip=haswell–xtarget=haswell–xarch=avx2

  • 编译器的新选项:

    • –g1-生成文件和行号以及在事后调试期间视为至关重要的简单参数信息。

    • –xdebuginfo-控制发出多少调试和监测信息。

    • –xglobalize-控制文件静态变量的全局化,但是不控制函数的全局化。

    • –xinline_param-允许更改编译器用来确定何时内联函数调用的试探式方法。

    • –xinline_report-可生成在编译器内联函数时写入标准输出的报告。

    • –xipo_build-避免在初始传递期间通过编译器进行优化而仅在链接时优化,从而缩短编译时间。

    • –xkeep_unref-保留未引用的函数和变量的定义。

    • –xpatchpadding-在开始每个函数之前保留一个内存区域。

    • –xsegment_align-使驱动程序在链接行上包括特殊映射文件。

    • –xthroughput-指示当许多进程同时在系统上运行时运行应用程序。

    • –xunboundsym-指定程序是否包含对动态绑定符号的引用。