Compaq Fortran 並列コンパイラ指示文:その直後の DO ループの繰り返しを並列実行することを指定します。
形式
c$PAR PDO [option[[,] option] ... ]
c
次のいずれか:C (または c),!,* (「並列指示文の構文規則」を参照)
option
以下のいずれか。
スレッドに割り付けられる連続した繰り返し数を調整します。PDO 構文の終わりで,チャンクの大きさは基本値に戻されます。CHUNK の効果はスケジューリング形式によって変わります。
PDO 指示文で指定されたチャンクの大きさは,プログラムの前の方で CHUNK 指示文を使って設定されたチャンクの大きさよりも優先され,<B>PDO 構文の中でのみ適用されます。
基本チャンクの大きさと,同じプログラムに対して複数の文脈でチャンクの大きさを指定した場合の効果の詳細については,「CHUNK (TU*X のみ)」を参照してください。
BLOCKED を CHUNK の代替スペルとして使用することができます。
LASTLOCAL (var[[,] var] ...)
LASTLOCAL キーワードは,LASTPRIVATE 節と同じです。
LAST LOCAL は,自由形式ソース・コードでも,LASTLOCAL の代替スペルとして使用することができます。
スケジューリング形式と,PDO 構文の作業割付けを制御します。
スケジューリング形式を指定する方法はいくつかあります。他の情報がなければ,スケジューリング形式の基本設定は STATIC となります。mode とスケジューリング形式の詳細については,「MP_SCHEDTYPE」を参照してください。
PDO 構文が終わった時点で,スケジューリング形式は基本設定に戻されます。スケジューリング形式は,プログラムの正しさには影響を与えませんが,性能には影響を与える可能性があります。
繰り返しが,通常の Compaq Fortran DO 文によって生成されるのと同じ順序でスレッドに割り付けられることを指定します。
LOCAL を PRIVATE の代替スペルとして使用することができます。
ここで使用される REDUCTION キーワードは,変数と演算子形式の両方を指定する必要がある,REDUCTION 節とは異なります。
このバージョンのキーワードでは,演算子は PDO 指示文で指定されません。コンパイラはソース・コードからリダクション演算を決定することができません。
REDUCTION キーワードは,DO ループ中の変数に対して,その変数が以下の基準を満たす場合にのみ適用することができます。
スカラでなくてはなりません。
DO ループ中でちょうど 1 回だけ代入されていなくてはなりません。
DO ループ中でちょうど 1 回だけ代入の右辺で読み込まれていなくてはなりません。
x = x operator expr x = expr operator x (except for subtraction) x = operator(x, expr) x = operator(expr, x)
operator は,次のサポートされているリダクション演算のいずれか:+,-,*,.AND.,.OR.,.EQV.,.NEQV.,MAX,MIN,IAND,または IOR
コンパイラは,部分的な結果を計算して局所変数に格納し,結果を組み合わせてリダクション変数に格納することによって,リダクション演算を書き換えます。リダクション変数は外側の文脈で SHARED になっていなくてはなりません。
do_loop
ループ制御付きの Compaq Fortran DO 構文。DO WHILE や,ループ制御を持たない DO ループであってはなりません。DO ループの繰り返し変数は整数型でなくてはなりません。
DO ループの繰り返しは,既存のスレッドに分散されます。
規則と振る舞い
NOWAIT を指定するのは,OpenMP Fortran API の DO 指示文で NOWAIT を指定するのと同じです。
PDO 指示文は,PARALLEL および END PARALLEL 指示文の字句的寸法の中でのみ使用できます。
規則と制約の詳細については,ユーザー・マニュアルを参照してください。
関連情報
Compaq Fortran 並列コンパイラ指示文,OpenMP Fortran API コンパイラ指示文,Tru64 UNIX システム用の並列指示文