JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: OpenMP API ユーザーガイド
search filter icon
search icon

ドキュメントの情報

はじめに

1.  OpenMP API について

2.  OpenMP プログラムのコンパイルと実行

3.  実装によって定義される動作

4.  入れ子並列処理

5.  タスク化

6.  変数の自動スコープ宣言

7.  スコープチェック

8.  パフォーマンス上の検討事項

A.  指令での節の記述

B.  OpenMP への変換

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

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

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

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

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

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

B.2.1 従来の C のプラグマと OpenMP の変換の問題

索引

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 の変換の問題