並列化 指令は、コンパイラに対して、指令のあとに続く DO ループまたはコードの範囲を並列化するように明示的に指示します。一般的な指令とは、構文が異なります。並列化指令は、-openmp、-parallel、または -explicitpar コンパイルオプションが指定されている場合のみ、認識されます。Fortran 並列化についての詳細は、『OpenMP API ユーザーズガイド』および『Fortran プログラミングガイド』を参照してください。
Fortran コンパイラは、OpenMP 2.5 共有メモリー並列化モデルをサポートします。従来の Sun および Cray の並列化指令は現在推奨されていないため、使用すべきではありません。
Fortran 95 コンパイラでは、並列プログラミングモデルとして OpenMP Fortran 共有メモリーマルチプロセッシング API を使用することをお勧めします。API は、OpenMP Architecture Review Board (http://www.openmp.org) によって指定されます。
OpenMP 指令を使用可能にするには、コマンド行オプション -openmp を指定してコンパイルする必要があります (「3.4.155 -xopenmp[={ parallel|noopt|none}]」を参照)。
f95 で使用可能な OpenMP 指令についての詳細は、『OpenMP API ユーザーズガイド』を参照してください。
従来の Sun および Cray 形式の並列化指令は非推奨になりました。コンパイラはこれらの指令を認識しますが、今後の Sun Studio のリリースでは変更される可能性があります。Open MP 並列化 API が推奨されます。従来の Sun/Cray 指令から OpenMP モデルへの移行方法については、『OpenMP API ユーザーズガイド』を参照してください。
Sun 形式の並列化指令は、-parallel および -explicitpar のデフォルトです。Sun 指令には $PAR という指令「センチネル」が付きます。
Cray 形式の並列化指令を使用するには、-mp=cray というコンパイラオプションを指定します。 これには、MIC$ というセンチネルが付きます。Sun と Cray では、同じ指令でも解釈の仕方が異なります。詳細は、『Fortran プログラミングガイド』の並列化の章を参照してください。また、従来の Sun/Cray 並列化指令を OpenMP 指令に変換する方法については、『OpenMP API ユーザーズガイド』も参照してください。
x86 Solaris および Linux プラットフォームで、並列化に使用できるのは OpenMP 指令だけです。
SUN/Cray の並列化指令の構文は次のとおりです。
最初の文字は、1 桁目にある必要があります。
最初の文字は、c、C、*、! のいずれかです。
次の 4 文字は、空白を入れず $PAR (Sun 形式) または MIC$ (Cray 形式) とします。大文字でも小文字でもかまいません。
そのあとに、指令のキーワードと修飾子を空白で区切って続けます。明示的な並列化指令のキーワードは次のとおりです。
TASKCOMMON、DOALL、DOSERIAL、DOSERIAL*
並列化指令では、キーワードのあとにオプション修飾子を指定します。
例: 共有変数でループを指定
C$PAR DOALL SHARED(yvalue) Sun 形式 CMIC$ DOALL SHARED(yvalue) Cray 形式 |