XL Fortran は、他の Fortran 製品で使用できる多くのディレクティブをサポートしています。これによって、製品間での移植が簡単に実行できます。 XL Fortran バージョン 8.1.1 で、デフォルト値以外の trigger_constants がコードに含まれている場合、 -qdirective コンパイラー・オプションを使用して、それらを指定することができます。 たとえば、xx.f ファイルにある CRAY コードを移植する場合、以下のコマンドを使用して CRAY trigger_constant を追加することができます。
xlf95 xx.f -qdirective=mic\$
固定ソース形式コードに関しては、XL Fortran バージョン 8.1.1 では、ディレクティブの trigger_head 部分の ! 値だけでなく、trigger_head 値 C、c、および * もサポートされています。
詳細については、-qdirective オプションを参照してください。
XL Fortran は多くのプログラミング用語を同義語としてサポートしています。これにより、他の Fortran 製品からのコードの移植が容易になります。サポートされている用語は、以下の表に示されているようにコンテキストに依存しています。
表 30. PARALLEL DO 文節およびその XL Fortran 同義語
PARALLEL DO 文節 | XL Fortran 同義語 |
---|---|
LASTLOCAL | LASTPRIVATE |
LOCAL | PRIVATE |
MP_SCHEDTYPE および CHUNK | SCHEDULE |
SAVELAST | LASTPRIVATE |
SHARE | SHARED |
NEW | PRIVATE |
表 31. PARALLEL DO スケジューリング・タイプおよびその XL Fortran 同義語
スケジューリング・タイプ | XL Fortran 同義語 |
---|---|
GSS | GUIDED |
INTERLEAVE | STATIC(1) |
INTERLEAVED | STATIC(1) |
INTERLEAVE(n) | STATIC(n) |
INTERLEAVED(n) | STATIC(n) |
SIMPLE | STATIC |
表 32. 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 for AIX ランゲージ・リファレンス 」の 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