Sun Studio 12: Fortran ユーザーズガイド

D.4 Sun の並列化指令


注 –

従来の Sun および Cray の並列化指令は非推奨になりました。Solaris SPARC および x86 プラットフォームでの並列化には、OpenMP API の使用が推奨されます。従来のアプリケーションを OpenMP に移行する方法については、『OpenMP API ユーザーズガイド』を参照してください。


Fortran 95 で推奨する並列化モデルは、OpenMP による並列化です。Sun 形式の並列化指令は、従来のアプリケーション用にここで説明し、『Fortran プログラミングガイド』の並列化に関する章で詳しく説明しています。

表 D–3 Sun 形式の並列化指令の要約

書式

C$PAR directive [optional_qualifiers] : 最初の行C$PAR& [more_qualifiers] : 継続行

固定書式。指令指示子には、C (前述の例)、c*、または ! を使用できます。修飾子が複数ある場合は、コンマで区切ります。72 桁目を越える文字は、 -e コンパイラオプションを指定していないかぎり無視されます。

TASKCOMMON 指令

C$PAR TASKCOMMON block_name

共通ブロック block_name の変数をスレッド非公開として宣言します。これは、スレッドに対しては非公開ですが、スレッド内ではグローバルとなります。共通ブロック TASKCOMMON を宣言するには、そのブロックの全共通宣言のあとにこの指令を指定する必要があります。

DOALL 指令

C$PAR DOALL [qualifiers]

それ以降の DO ループを並列化します。修飾子は、次のとおりです。 

PRIVATE(list) リストの名前を PRIVATE として宣言します。

SHARED(list) リストの名前を SHARED として宣言します。

MAXCPUS(n) 多くても使用するスレッドは n 個です。

READONLY(list) リストの変数は、ループ内で変更されません。

SAVELAST すべての非公開変数の最終的な値を保存します。

STOREBACK(list) リストの変数の最終的な値を保存します。

REDUCTION(list) リストの変数は、縮約変数です。

SCHEDTYPE(type) スケジューリング型を使用します (デフォルトは STATIC)。

STATIC

SELF(nchunk)

FACTORING[(m)]

GSS[(m)]

DOSERIAL 指令

C$PAR DOSERIAL

以降のループの並列化を無効にします。 

DOSERIAL* 指令

C$PAR DOSERIAL*

以降のループのネストの並列化を無効にします。