Oracle® Solaris Studio 12.4 リリースの新機能

印刷ビューの終了

更新: 2014 年 12 月
 
 

全コンパイラに共通の新機能および変更点

C、C++、および Fortran コンパイラに対して前のリリースから次の変更が行われました。詳細は、コンパイラのマニュアルページを参照してください。C++ コンパイラの固有の変更点については、Chapter 2, C++ コンパイラに記載されています。

新しいハードウェア上でのアプリケーションパフォーマンス

Oracle Solaris Studio のすべてのリリースには、Oracle Sun ハードウェアサーバー用のパフォーマンス向上が含まれています。このリリースでは、Oracle Solaris Studio 12.3 1/13 Platform-Specific Enhancements リリースで最初に利用可能になった、SPARC T5、SPARC M5、SPARC M6、SPARC M10、および Intel Ivy Bridge ならびに Haswell のコンパイラおよびライブラリのパフォーマンス向上のための拡張サポートが含まれています。

  • 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 についてのデフォルトの浮動小数点動作の変更

x86 上のデフォルトコンパイラ値を使用してコンパイルされたプログラムでの浮動小数点計算の結果が、以前のリリースと比べて Oracle Solaris Studio 12.4 では若干異なる場合があります。同じハードウェアおよびオペレーティングシステム上でも異なる結果が得られる場合があります。これは、すべてのアドレス空間モデルおよびプラットフォームについてのデフォルトの命令セットアーキテクチャーが 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=386 でなく –xarch=sse2 になります。したがって、浮動小数点演算を使用してデフォルトの –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 のサポート。

  • –xopenmp=parallel のシノニムとしての –fopenmp のサポート。

  • 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 - 動的に結合されたシンボルへの参照がプログラムに含まれているかどうかを指定します。