Oracle® Solaris Studio 12.4: Fortran ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

Fortran ディレクティブのサマリー

この付録では、f95 Fortran コンパイラで認識可能なディレクティブについて示します。

  • 一般的な Fortran ディレクティブ

  • Sun の並列化ディレクティブ

  • Cray の並列化ディレクティブ

  • OpenMP Fortran 95 指令、ライブラリルーチン、および環境

C.1 一般的な Fortran ディレクティブ

f95 で受け入れられる一般的な指令ては、ディレクティブで説明します。

表 C-1  一般的な Fortran 指令のサマリー
書式
!$PRAGMA keyword ( a [ , a ] … ) [ , keyword ( a [ , a ] … ) ] ,…
!$PRAGMA SUN keyword ( a [ , a ] … ) [ , keyword ( a [ , a ] … ) ] ,…
桁 1 の注釈指示子は、cC!、または * を指定できます (これらの例では ! を使用します。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
次の DOFORALL、または WHERE ループにループがもたらす依存関係がないことを表明します。これでループを最適化できます。-xivdep オプションによって解釈が決まります。IVDEP ディレクティブを参照してください。

C.3 Fortran の OpenMP ディレクティブ

Oracle Solaris Studio Fortran のコンパイラは、OpenMP 3.1 の Fortran API をサポートしています。-openmp コンパイラフラグは、これらの指令を有効にします(–xopenmp[={parallel|noopt|none}]を参照)。

詳細は、『OpenMP API ユーザーズガイド』を参照してください。