Sun Studio 12: OpenMP API ユーザーズガイド

B.1 従来の Fortran 指令の変換

従来の Fortran プログラムでは、Sun または Cray 形式の並列化指令が使用されています。これらの指令の詳細については、『Fortran プログラミングガイド』の「並列化」に関する章を参照してください。

B.1.1 Sun 形式の Fortran の指令の変換

次の表は、Sun の並列化指令およびその従属句と、それに相当する OpenMP の指令の概要です。これらは、変換の一例です。

表 B–1 Sun の並列化指令を OpenMP の指令に変換する

Sun の指令 

OpenMP の指令 

C$PAR DOALL [qualifiers]

!$omp parallel do [qualifiers]

C$PAR DOSERIAL

完全に相当する句はありません。次で代用することができます。 

!$omp master

loop

!$omp end master

C$PAR DOSERIAL*

完全に相当する句はありません。次で代用することができます。 

!$omp master

loopnest

!$omp end master

C$PAR TASKCOMMON block[,...]

!$omp threadprivate (/block/[,...])

DOALL 指令では、次の修飾句を指定することができます。

表 B–2 DOALL 修飾句とそれに相当する OpenMP の句

Sun の DOALL 句 

OpenMP の PARALLEL DO に相当する句 

PRIVATE(v1,v2,...)

private(v1,v2,...)

SHARED(v1,v2,...)

shared(v1,v2,...)

MAXCPUS(n)

num_threads(n)。 完全に相当する句はありません。

READONLY(v1,v2,...)

完全に相当する句はありません。firstprivate(v1,v2,...) を使用して同じ効果を得ることができます。

STOREBACK(v1,v2,...)

lastprivate(v1,v2,...).

SAVELAST

完全に相当する句はありません。lastprivate(v1,v2,...) を使用して同じ効果を得ることができます。

REDUCTION(v1,v2,...)

reduction(operator:v1,v2,...) 縮約演算子および変数リストを指定する必要があります。

SCHEDTYPE(spec)

schedule(spec) (表 B–3 を参照)

SCHEDTYPE(spec) 句では、次のスケジュール指定を使用することができます。

表 B–3 SCHEDTYPE のスケジュール指定とそれに相当する OpenMP の schedule

SCHEDTYPE(spec) 

OpenMP の schedule(spec) 句

SCHEDTYPE(STATIC)

schedule(static)

SCHEDTYPE(SELF(chunksize))

schedule(dynamic,chunksize)

デフォルトの chunksize の値は 1 です。

SCHEDTYPE(FACTORING(m))

完全に相当する句はありません。 

SCHEDTYPE(GSS(m))

schedule(guided, m)

デフォルトの m の値は 1 です。

B.1.1.1 Sun 形式の Fortran の指令と OpenMP の変換の問題

B.1.2 Cray 形式の Fortran の指令の変換

Cray 形式の Fortran 並列化指令は、指令を示す標識が !MIC$ である点を除き、Sun 形式のものと同一です。また、!MIC$ DOALL の修飾句も異なります。

表 B–4 Cray 形式の DOALL 修飾句とそれに相当する Open MP の句

Cray の DOALL 句 

OpenMP の PARALLEL DO に相当する句 

SHARED(v1,v2,...)

SHARED(v1,v2,...)

PRIVATE(v1,v2,...)

PRIVATE(v1,v2,...)

AUTOSCOPE

相当する句はありません。スコープは必ず、明示的に指定するか、DEFAULT 句か __AUTO 句と共に指定します。

SAVELAST

完全に相当する句はありません。lastprivate を使用して同じ効果を得ることができます。

MAXCPUS(n)

num_threads(n)。 完全に相当する句はありません。

GUIDED

schedule(guided, m)

デフォルトの m の値は 1 です。

SINGLE

schedule(dynamic,1)

CHUNKSIZE(n)

schedule(dynamic,n)

NUMCHUNKS(m)

schedule(dynamic,n/m) ここで、n には反復数を指定します。

B.1.2.1 Cray 形式の Fortran の指令と OpenMP の指令の変換の問題

両者の違いは、Cray の AUTOSCOPE に相当するものがない点を除き、Sun 形式の指令の場合と同様です。