Oracle Solaris Studio 12.2: OpenMP API ユーザーガイド

B.2 従来の C プラグマの変換

C コンパイラでは、明示的な並列化用の従来のプラグマを使用することができます。これらのプラグマについては、『C ユーザーズガイド』を参照してください。Fortran の指令の場合と同様に、これらは一例です。

従来の並列化プラグマは、次のとおりです。

表 B–5 C の並列化プラグマを OpenMP に変換する

従来の C プラグマ  

相当する OpenMP プラグマ  

#pragma MP taskloop [clauses]

#pragma omp parallel for [clauses]

#pragma MP serial_loop

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

#pragma omp master

loop

#pragma MP serial_loop_nested

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

#pragma omp master

loopnest

taskloop プラグマでは、次の節を指定できます。

表 B–6 taskloop の節とそれに相当する OpenMP の節

taskloop の節

OpenMP の parallel for に相当する節

maxcpus(n)

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

private(v1,v2,...)

private(v1,v2,...)

shared(v1,v2,...)

shared(v1,v2,...)

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–7 を参照)

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

表 B–7 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.2.1 従来の C のプラグマと OpenMP の変換の問題