Fortran ディレクティブのサマリー
この付録では、f95 Fortran コンパイラで認識可能なディレクティブについて示します。
C.1 一般的な Fortran ディレクティブ
f95 で受け入れられる一般的な指令ては、ディレクティブで説明します。
表 C-1 一般的な Fortran 指令のサマリー
書式
|
!$PRAGMA keyword ( a [ , a ] … ) [ , keyword ( a [ , a ] … ) ] ,… !$PRAGMA SUN keyword ( a [ , a ] … ) [ , keyword ( a [ , a ] … ) ] ,… 桁 1 の注釈指示子は、c、C、!、または * を指定できます (これらの例では ! を使用します。f95 の自由形式では ! を使用する必要があります。)
|
C ディレクティブ
| !$PRAGMA C(list) 外部関数の名前リストを C 言語のルーチンとして宣言します。
|
IGNORE_TKR ディレクティブ
| !$PRAGMA IGNORE_TKR {name {, name} ...} コンパイラは、特定の呼び出しを解釈するとき、一般的な手続きのインタフェースで表示される仮引数名の型、種類、ランクを無視します。
|
UNROLL ディレクティブ
| !$PRAGMA SUN UNROLL=n コンパイラに、次のループは長さ n に展開できることを伝えます。
|
WEAK ディレクティブ
| !$PRAGMA WEAK(name[=name2]) name を弱いシンボル (weak symbol) または name2 の別名として宣言します。
|
OPT ディレクティブ
| !$PRAGMA SUN OPT=n 副プログラムの最適化レベルを n に設定します。
|
PIPELOOP ディレクティブ
| !$PRAGMA SUN PIPELOOP[=n] ループの n 離れた反復間の依存性を宣言します。
|
PREFETCH ディレクティブ
| !$PRAGMA SUN_PREFETCH_READ_ONCE (name) !$PRAGMA SUN_PREFETCH_READ_MANY (name) !$PRAGMA SUN_PREFETCH_WRITE_ONCE (name) !$PRAGMA SUN_PREFETCH_WRITE_MANY (name) 名前の参照のために、先読み命令を生成するようにコンパイラに要求します。(-xprefetch オプションを指定する必要があります。このオプションはデフォルトで有効になっています。PREFETCH ディレクティブは、—xprefetch=no でコンパイルし無効にします。ターゲットアーキテクチャーも PREFETCH ディレクティブをサポートしている必要があり、コンパイラ最適化レベルは -xO2 より上に設定されている必要があります)
|
ASSUME ディレクティブ
| !$PRAGMA [BEGIN} ASSUME (expression [,probability]) !$PRAGMA END ASSUME プログラム内の特定の個所において、コンパイラが真であると想定できる条件について表明を行います。
|
|
C.2 特殊な Fortran ディレクティブ
次の指令は、f95 でのみ使用できます。詳細は、FIXED 指令と FREE 指令を参照してください。
表 C-2 特殊な Fortran ディレクティブ
書式
| !DIR$ directive : 最初の行 !DIR$& ... : 継続行 固定形式の場合、C は CDIR$ directive... のように指令指示子としても CDIR$ directive... 行は第 1 行から始める必要があります。自由形式の場合は、行の前に空白がある場合があります。
|
FIXED/FREE ディレクティブ
| !DIR$ FREE!DIR$ FIXED 指令のあとに続くソース行の書式を指定します。これらは、次に FREE 指令または FIXED 指令が出現するまで、残りのソースファイルに適用されます。
|
IVDEP
| !DIR$ IVDEP 次の DO、 FORALL、または WHERE ループにループがもたらす依存関係がないことを表明します。これでループを最適化できます。 -xivdep オプションによって解釈が決まります。 IVDEP ディレクティブを参照してください。
|
|
C.3 Fortran の OpenMP ディレクティブ
Oracle Solaris Studio Fortran のコンパイラは、OpenMP 3.1 の Fortran API をサポートしています。-openmp コンパイラフラグは、これらの指令を有効にします(–xopenmp[={parallel|noopt|none}]を参照)。
詳細は、『OpenMP API ユーザーズガイド』を参照してください。