ディレクティブの移植性

XL Fortran は、他の Fortran 製品で使用できる多くのディレクティブをサポートしています。 これによって、製品間での移植が簡単に実行できます。 XL Fortran で、デフォルト値以外 の trigger_constants がコードに含まれている場合、 -qdirective コンパイラー・オプションを使用して、 それらを指定することができます。 たとえば、xx.f ファイルにある CRAY コードを移植する場合、以下の コマンドを使用して CRAY trigger_constant を追加することができます。

   xlf95 xx.f -qdirective=mic¥$

固定ソース形式コードに関しては、XL Fortran では、ディレクティブの trigger_head 部分の ! 値だけでなく、trigger_headCc、および * もサポートされています。

詳細については、-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

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
IBM Copyright 2003