XL Fortran は、他の Fortran 製品で使用できる多くのディレクティブをサポートしています。 これによって、製品間での移植が簡単に実行できます。 XL Fortran で、デフォルト値以外 の trigger_constants がコードに含まれている場合、 -qdirective コンパイラー・オプションを使用して、 それらを指定することができます。 たとえば、xx.f ファイルにある CRAY コードを移植する場合、以下の コマンドを使用して CRAY trigger_constant を追加することができます。
xlf95 xx.f -qdirective=mic¥$
固定ソース形式コードに関しては、XL Fortran では、ディレクティブの trigger_head 部分の ! 値だけでなく、trigger_head 値 C、c、および * もサポートされています。
詳細については、-qdirective オプションを参照してください。
XL Fortran は多くのプログラミング用語を同義語としてサポートしています。 これにより、他の Fortran 製品からのコードの移植が容易になります。 サポートされている用語は、以下の表に示されているようにコンテキストに依存しています。
表 25. PARALLEL DO 文節およびその XL Fortran 同義語
PARALLEL DO 文節 | XL Fortran 同義語 |
---|---|
LASTLOCAL | LASTPRIVATE |
LOCAL | PRIVATE |
MP_SCHEDTYPE および CHUNK | SCHEDULE |
SAVELAST | LASTPRIVATE |
SHARE | SHARED |
NEW | PRIVATE |
表 26. PARALLEL DO スケジューリング・タイプおよびその XL Fortran 同義語
スケジューリング・タイプ | XL Fortran 同義語 |
---|---|
GSS | GUIDED |
INTERLEAVE | STATIC(1) |
INTERLEAVED | STATIC(1) |
INTERLEAVE(n) | STATIC(n) |
INTERLEAVED(n) | STATIC(n) |
SIMPLE | STATIC |
表 27. PARALLEL SECTIONS 文節およびその XL Fortran 同義語
PARALLEL SECTIONS 文節 | XL Fortran 同義語 |
---|---|
LOCAL | PRIVATE |
SHARE | SHARED |
NEW | PRIVATE |
NEW ディレクティブを使用して、PARALLEL DO ループ または PARALLEL SECTIONS 構文でローカルでなければならない変数を指定します。 このディレクティブは、PARALLEL DO ディレクティブ および PARALLEL SECTIONS ディレクティブの PRIVATE 文節と 同じ機能を果たします。
背景情報
NEW ディレクティブは、-qsmp コンパイラー・オプションが 指定された場合のみ有効です。
構文
>>-NEW--named_variable_list------------------------------------>< |
NEW ディレクティブは、PARALLEL DO ディレクティブ または PARALLEL SECTIONS ディレクティブの直後にする必要があります。
NEW ディレクティブを指定する場合、対応する PARALLEL DO また は PARALLEL SECTIONS ディレクティブを文節なしで指定する必要があります。
PARALLEL DO ディレクティブの後に NEW ディレクティブが続く場合、 NEW ディレクティブの次の最初の 非コメント行 (他のディレクティブは含まない) は DO ループにする必要があります。 この行は、無限の DO または DO WHILE ループに することはできません。
NEW ディレクティブの named_variable_list にある 変数名には、PARALLEL DO ディレクティブの PRIVATE 文節、または PARALLEL SECTIONS ディレクティブの PRIVATE 文節にある変数名と同じ制約事項が適用されます。 「XL Fortran ランゲージ・リファレンス」の PARALLEL DO ディレクティブと PARALLEL SECTIONS 構文についての節を参照してください。
例
INTEGER A(10), C(10) REAL B(10) INTEGER FUNC(100) !SMP$ PARALLEL DO !SMP$ NEW I, TMP DO I = 1, 10 TMP = A(I) + COS(B(I)) C(I) = TMP + FUNC(I) END DO