この付録には、今回のリリースおよび最近のリリースの Fortran コンパイラの新機能と変更された機能を記載します。
Oracle Solaris Studio Fortran 95 コンパイラバージョン 8.7 は、Oracle Solaris Studio 12.4 リリースのコンポーネントです。
x86 の Intel Ivy Bridge プロセッサのための新しい -xarch、-xchip、および -xtarget 値。
SPARC T5、M5、M6、および M10+ プロセッサのための新しい -xarch、-xchip、および -xtarget 値。
Ivy Bridge アセンブラ命令のサポート。
Ivy Bridge 組み込み関数のサポートで、これは solstudio-install-dir/lib/compilers/include/cc/immintrin.h から見つけることができます。
x86 の -m32 について、-xarch=generic のデフォルト値を sse2 に設定。
x86 での -xlinkopt のサポート。最新の Intel プロセッサ用に調整された大型エンタープライズアプリケーションのための、モジュール間および手続き間のコード配列最適化。大規模アプリケーションでは、バイナリを完全に最適化することで、最大 5% のパフォーマンス向上が実現できます。
拡張された -xs オプションにより、実行可能ファイルのサイズと、デバッグのためにオブジェクトファイルを保持する必要性とのトレードオフを制御します。
Linux での -xanalyze および -xannotate のサポート。
-xopenmp=parallel の同義語としての -fopenmp のサポート。
モジュールを使用するアプリケーションのコンパイル時間が大幅に改善され、モジュール処理によるメモリーオーバーフローが解消されました。
ソースファイル内で #pragma ident を使用して、コンパイル済みオブジェクトのソースバージョンを識別することができます。
宣言内で使用される文字型で、LEN 型パラメータとして遅延型パラメータ (コロン) のサポート。例:
character(LEN=:), pointer :: str
手続きポインタのサポート。
ISO_C_BINDING モジュールに対する Fortran 2003 規格の C_F_PROCPOINTER 関数のサポート。C_FUNLOC 関数は、手続きポインタを引数として使用できるように拡張されました。
ABSTRACT インタフェースに対する Fortran 2003 機能のサポート。
オブジェクト指向の Fortran の完全サポート。GENERIC、DEFERRED、NON_OVERRIDABLE、PASS、および NOPASS 属性による型束縛手続きが使用できるようになりました。
構造型と汎用関数が同じ名前を持つことが可能な Fortran 2003 機能のサポート。
TARGET オブジェクトを INTENT(IN) ポインタ仮引数に渡すことが可能な Fortran 2008 機能のサポート。
構造型のルーチンをファイナライズできる Fortran 2003 の機能のサポート。
新しいコンパイラオプション
-fma は、浮動小数点の積和演算 (FMA) 命令の自動生成を有効にします。
-fserialio は、プログラムが一度に複数のスレッド内で I/O を実行しないことを指定します。
(x86) -preserve_argvalues は、レジスタベースの関数引数のコピーをスタック内に保存します。
-xdebuginfo は、デバッグおよび可観測性情報の出力量を制御します。
-xglobalize は、ファイルの静的変数のグローバル化を制御します (関数は制御しません)。
-xinline_param は、コンパイラが関数呼び出しをインライン化するタイミングを判断するために使用するヒューリスティックを変更できます。
-xinline_report は、コンパイラによる関数のインライン化に関する報告を生成し、標準出力に書き込みます。
-xipo_build を設定すると、最初のコンパイラ経由の受け渡し時には最適化されず、リンク時にのみ最適化されることによって、コンパイルの時間が短縮されます。
-xkeep_unref は、参照されない関数および変数の定義を維持します。
-keepmod は、コンパイル時に変更されないモジュールを保持します。デフォルトは -xkeepmod=yes で、この指定により、新しいモジュールファイルが作成されると、以前のコンパイルから変更が何もなくても、古い動作を置換します。
-xM は、メイクファイル依存関係を自動的に生成します。新しい -keepmod=yes オプションと組み合わせることで、モジュールを使用する Fortran アプリケーション上でもっとも最適な増分構築が可能になります。
-xpatchpadding は、各関数の開始前にメモリー領域を予約します。
(Oracle Solaris) -xsegment_align を指定すると、ドライバはリンク行で特殊なマップファイルをインクルードします。
-xthroughput は、システム上で多数のプロセスが同時に実行されている状況でアプリケーションが実行されることを示します。
-xunboundsym は、動的に結合されたシンボルへの参照がプログラムに含まれているかどうかを指定します。
SPARC プラットフォーム上のライブラリ libfmaxlai、libfmaxvai、libfminlai、libfminvai、libfprodai、および libfsumai は、2005 年の Sun Studio 10 リリースから Studio Fortran で使用されていません。
これらのライブラリは将来のリリースで削除されます。その時点において、Sun Studio 10 リリース以前に Studio コンパイラによって生成されたオブジェクトファイルおよび実行可能ファイルは使用できなくなり、新しい Studio コンパイラで再コンパイルする必要があります。これらのいずれかのライブラリを必要とする古いオブジェクトファイルおよび実行可能ファイルを持っていて、再コンパイルの実行が可能でない場合、古いコンパイラインストール環境を保持するか、必要な特定のライブラリを古いコンパイラインストール環境から新しいコンパイラインストール環境にコピーするようにします。
Oracle Solaris Studio Fortran 95 コンパイラバージョン 8.6 は、Oracle Solaris Studio 12.3 リリースのコンポーネントです。
Fortran 実行時ライブラリは、2G バイトより大きい順番探査書式なし記録をサポートするようになりました。
新しい SPARC T4 プラットフォームのサポート: —xtarget=T4、—xchip=T4、—xarch=sparc4
新しい x86 プラットフォーム Sandy Bridge / AVX のサポート: —xtarget=sandybridge —xchip=sandybridge —xarch=avx
新しい x86 プラットフォーム Westmere / AES のサポート: —xtarget=westmere —xchip=westmere —xarch=aes
新しいコンパイラオプション: -Xlinker arg は、引数をリンカー ld(1) に渡します。—Wl,arg と同等です。(-Xlinker arg)
OpenMP のデフォルトのスレッド数 OMP_NUM_THREADS が 2 になりました (以前は 1 でした)。(–xopenmp[={parallel|noopt|none}])
OpenMP 3.1 共有メモリー並列化仕様のサポート。(–xopenmp[={parallel|noopt|none}])
Sun Performance Library にリンクするには、—library=sunperf を使用します。これにより、-xlic_lib=sunperf は廃止されます。(-library=sunperf)
組み込み関数ルーチン LEADZ、POPCNT、および POPPAR には以前、引数の型として戻り型が指定されていました。このリリースでは Fortran 2008 規格に準拠するために、組み込み関数は引数型にかかわらずデフォルトで整数を返します。これによって、前のリリースとの軽微な非互換性が発生します。
多相性に関するオブジェクト指向の Fortran の機能がサポートされるようになりました。
サポートされる OOF 機能: 型拡張および多相要素: CLASS 文、無制限の多相性、SELECT TYPE 構文、ABSTRACT 構造型、EXTENDS_TYPE_OF および SAME_TYPE_AS 組み込み関数、および無制限ポインタへの連続型の割り当て。
サポートされない OOF 機能: 型束縛手続き: 型束縛 PROCEDURE 宣言、GENERIC、DEFERRED、NON_OVERRIDABLE、PASS、NOPASS。
F2003/2008 のその他の新機能:
拡張された構造体構成子: 成分名を使用した構造体定数の構築。
モジュール構造型および成分への拡張された PUBLIC/PRIVATE アクセス制御。
Fortran 2008 数学組み込み関数のサポートが増えました。ERFC_SCALED、NORM2、および x86 プラットフォームでの一部の REAL*16 形式を除くほとんどの Fortran 2008 数学組み込み関数がサポートされるようになりました。
成分を持たない構造型。
KIND 引数が ICHAR、 IACHAR、 ACHAR、 SHAPE、 UBOUND、 LBOUND、 SIZE、 MINLOC、 MAXLOC、 COUNT、 LEN、 LEN_TRIM、 INDEX、 SCAN、および VERIFY の組み込み関数に追加されました。
BACK 引数が MINLOC および MAXLOC 組み込み関数に追加されました。
新しい組み込み関数 FINDLOC および STORAGE_SIZE が追加されました。
新しいキーワード ERRMSG、SOURCE、および MOLD が ALLOCATE 文に追加され、ERRMSG が DEALLOCATE 文に追加されました。
Oracle Solaris Studio Fortran 95 コンパイラバージョン 8.5 は、Oracle Solaris Studio 12.2 リリースのコンポーネントです。
SPARC-V9 命令セットの SPARC VIS3 バージョンをサポートします。-xarch=sparcvis3 オプションを指定してコンパイルすると、コンパイラは、SPARC-V9 命令セットの命令に加えて、Visual Instruction Set (VIS) バージョン 1.0 を含む UltraSPARC 拡張機能、Visual Instruction Set (VIS) バージョン 2.0 の積和演算 (FMA) 命令を含む UltraSPARC-III 拡張機能、および Visual Instruction Set (VIS) バージョン 3.0 を使用できます。
x86 ベースのシステムに基づく -xvector オプションのデフォルト値が -xvector=simd に変更されました。最適化レベル 3 以上でメリットがある場合、x86 ベースのシステムではストリーミング拡張機能がデフォルトで使用されます。サブオプション no%simd を使用すると、この機能を無効にできます。SPARC ベースのシステムのデフォルトは -xvector=%none です。-xvector[=a] を参照してください
AMD SSE4a 命令セットのサポートを使用できるようになりました。-xarch=amdsse4a オプションによりコンパイルします。
新しい -traceback オプションを使用すると、サーバーエラーが発生した場合に実行可能ファイルはスタックトレースを出力できます。このオプションを指定すると、実行可能ファイルは、一連のシグナルをトラップして、実行の前にスタックトレースとコアダンプを出力します。複数のスレッドがシグナルを生成する場合、最初のスレッドに対するスタックトレースだけが生成されます。追跡表示を使用するには、f95、cc、または CC でプログラムをリンクするときに、-traceback オプションを追加します。便宜上、このオプションはコンパイル時にも受け付けられますが、無視されます。-traceback オプションを -G オプションとともに使用して共有ライブラリを作成すると、エラーになります。–traceback[={%none|common|signals_list}]を参照してください
-mt オプションが -mt=yes または -mt=no に変更されています。-mt=yes オプションにより、ライブラリが適切な順序でリンクされることが保証されます。-mt[={yes|no}] を参照してください。
-xprofile=tcov オプションが拡張されて、オプションのプロファイルディレクトリパス名がサポートされるようになりました。また、tcov 互換のフィードバックデータも生成できます。–xprofile=p を参照してください
新しい -xkeepframe[=[%all,%none ] オプションでは、指定した機能のスタック関連の最適化を禁止できます。%all を指定すると、すべてのコードのスタック関連の最適化が禁止されます。%none は、すべてのコードに対するスタック関係の最適化を許可します。デフォルトは -xkeepframe=%none です。–xkeepframe[=[%all,%none,name,no%name]]を参照してください
追加の F2003 機能が実装されています。Fortran 200x の機能を参照してください。
IVDEP 指令は、最適化の目的でループ内で検出された一部またはすべての配列参照のループがもたらす依存関係を無視するように、コンパイラに指示します。これにより、コンパイラはほかの方法で実行できないさまざまなループの最適化を実行できます。-xivdep オプションを使用すると、IVDEP 指令を無効にしたり、指令の解釈方法を指定したりできます。IVDEP ディレクティブを参照してください。
Solaris OS (x86 プラットフォーム) または Linux OS 上のコンパイラで生成されるオブジェクトファイルは、アプリケーションコードに _m128/_m64 データ型を使用するパラメータまたは戻り値を持つ関数が含まれる場合、旧バージョンのコンパイラと互換性を持ちません。.il インライン関数ファイル、アセンブラコード、または asm をこれらの関数を呼び出すインライン文を使用するユーザーも、この非互換性に注意する必要があります。
新しい x86 —xtarget 値の woodcrest、penryn、nehalem。
新しい SPARC —xtarget 値の ultraT2plus、sparc64vii。
新しい x86 —xarch 値および —xchip 値の ssse3、sse4_1、sse4_2、core2、penryn、nehalem、barcelona。
新しい SPARC —xarch 値および —xchip 値の sparcima、sparc64vii、ultraT2plus。
-xprofile=collect オプションおよび -xprofile=use オプションは、動的にアプリケーションにリンクされるマルチスレッドのプロファイリングをサポートします。
Solaris プラットフォームでは、-xpec[= yes|no] オプションにより、自動チューニングシステム (Automatic Tuning System、ATS) とともに使用するために再コンパイルできる PEC バイナリが生成されます。
-xdepend オプションが最適化レベル -xO3 以上に対して暗黙的に有効になり、-fast オプションの展開に含まれません。
OpenMP 3.0 タスクのサポート。
-xannotate[=yes| no] (SPARC プラットフォームのみ) は、あとで binopt (1) などのバイナリ変更ツールで変換できるバイナリを作成するようにコンパイラに指示します。
4 倍精度 (REAL*16) が x86 プラットフォームで実装されます。REAL*16 は 128 ビット IEEE 浮動小数点です。
コンパイラは、通常、一時ファイルを /tmp ディレクトリに作成します。TMPDIR 環境変数を設定することにより、別のディレクトリを指定できます。
cpu_time() Fortran 組み込みルーチンの動作が、Solaris プラットフォームと Linux プラットフォームで異なります。
Fortran 2003 の IMPORT 文が実装されます。
Fortran コンパイラは、次の Linux (x86 および x64) ディストリビューションで利用できるようになりました。SUSE Linux Enterprise Server 9 (Service Pack 3 以降)、Red Hat Enterprise Linux 4、および 2.6 カーネルを基にしたその他の Linux ディストリビューション (ただし正式なサポートはなし)。
-m64 を使用して、64 ビットの実行可能ファイルおよび共有ライブラリを作成できます。
-xarch の新しいフラグにより、古いフラグが置き換えられました。
-xtarget および -xchip の新しい値により、UltraSPARC T2 および SPARC64vi プロセッサ用にコードが生成されるようになりました。
新しいフラグ -fma=fused を使用することにより、FMA (fused multiply-add) 命令をサポートするプロセッサで、この命令を生成できるようになりました。
新しいフラグ -xhwcprof を使用すると、データ空間のプロファイリングがコンパイラでサポートされます。
新しいフラグ -xinstrument を使用すると、スレッドアナライザによるパフォーマンス分析が有効になります。
x86 で、-xregs=frameptr が -fast に追加されました。
Solaris x86 プラットフォームで、-xarch=sse2 および -xia オプションを使用することにより、区間演算がサポートされます。
明示的な先取り指令が、SPARC プラットフォームだけでなく、x86 プラットフォームで使用できるようになりました。(—xprefetch=explicit)
デバッグ情報のデフォルトの形式が「stabs」標準形式から「dwarf」標準形式に変更されました。( -xdebugformat=dwarf)
新しい -xmodel オプション:新しい -xmodel オプションでは、64 ビット AMD アーキテクチャーでカーネル、スモール、ミディアムのメモリーモデルを指定できます。大域変数および静的変数のサイズが 2G バイトを超える場合は、-xmodel=medium を指定します。そうでない場合は、デフォルトの -xmodel=small 設定を使用します。–xmodel=[small | kernel | medium]を参照してください。
x86 SSE2 プラットフォーム用に拡張された -xvector オプション。-xvector オプションでは、ベクトルライブラリ関数の呼び出しの自動生成や、SIMD (Single Instruction Multiple Data) 命令の生成が可能です。このオプションは、x86 SSE2 プラットフォームの拡張構文を提供します。
STACKSIZE 環境変数の拡張。STACKSIZE 環境変数の構文が拡張され、単位キーワードを含めることができるようになりました。
x86 プラットフォームで利用できる -xpagesize オプション。SPARC のほかに x86 プラットフォームでも、オプション -xpagesize、-xpagesize_heap、-xpagesize_stack を使用できます。–xpagesize=sizeを参照してください。
新しい UltraSPARC T1 および UltraSPARC IV+ への対応。-xarch、-xchip、-xcache、-xtarget の値で、新しい UltraSPARC プロセッサがサポートされます。–xtarget=tを参照してください。