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

付録 C Fortran 指令の要約

この付録では、f95 Fortran コンパイラで認識可能な指令について示します。

C.1 一般的な Fortran 指令

f95 で受け入れられる一般的な指令ては、「2.3 指令」で説明します。

表 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 でのみ使用できます。詳細は、「4.8.2 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 オプションによって解釈が決まります。「2.3.3 IVDEP 指令」を参照してください。

C.3 Fortran の OpenMP 指令

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

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