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

ドキュメントの情報

はじめに

1.  OpenMP API について

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

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

4.  入れ子並列処理

5.  タスク化

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

6.1 自動スコープ宣言用データスコープ節

6.1.1 __auto

6.1.2 default(__auto)

6.2 並列構文のスコープ宣言の規則

6.2.1 スカラー変数に関するスコープ宣言規則

6.2.2 配列に関するスコープ宣言規則

6.3 task 構文のスコープ宣言規則

6.3.1 スカラー変数に関するスコープ宣言規則

6.3.2 配列に関するスコープ宣言規則

6.4 自動スコープ宣言に関する一般的な注意事項

6.5 制限事項

6.6 自動スコープ宣言結果の確認

6.7 自動スコープ宣言の例

7.  スコープチェック

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

A.  指令での節の記述

索引

第 6 章

変数の自動スコープ宣言

OpenMP 構文で参照される変数のデータ共有属性の宣言は、スコープ宣言と呼ばれます。各データ共有属性の説明は、OpenMP 仕様の「Data-Sharing Attribute Clauses」節 (第 2 章) にあります。

OpenMP プログラムでは、OpenMP 構文で参照されるすべての変数は、スコープ宣言されます。一般的に、構文で参照される変数は、2 つの方法のうちのどちらかでスコープ宣言されます。プログラマがデータ共有属性節で変数のスコープを明示的に宣言するか、あるいは OpenMP API がコンパイラに実装されていることで、暗黙に決まるか事前定義されたスコープに対して規則が自動的に適用されます。これは OpenMP 仕様の「Data Environment: Data Scoping Rules」節 (第 2 章) に基づいています。

ほとんどのユーザーにとって、OpenMP パラダイムの使用の中でもっとも困難なのは、スコープ宣言です。変数を明示的にスコープ宣言することは、特に大規模で複雑なプログラムの場合、手間がかかりミスもしやすくなります。さらに、OpenMP 3.0 の仕様では、暗黙に決まるか事前定義された変数スコープに対する規則が指定されているため、これにより予期しない結果を招くことがあります。OpenMP 仕様 3.0 で task 指令が追加されたことにより、スコープ宣言がさらに複雑で難しくなりました。

自動的にスコープ宣言を行う機能 (自動スコープ宣言と呼ばれる) が Oracle Solaris Studio コンパイラでサポートされています。これは非常に便利なツールで、プログラマは変数のスコープを明示的に定義しなくても済みます。自動スコープ宣言では、コンパイラは非常にシンプルなユーザーモデルで、スマートな規則に基づいて変数のスコープを決定します。

コンパイラの過去のリリースでは、変数の自動スコープ宣言は parallel 構文でしか行えませんでした。最新の Oracle Solaris Studio コンパイラでは、自動スコープ宣言機能が task 構文で参照される変数にも拡張されました。