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.  変数の自動スコープ宣言

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.  指令での節の記述

B.  OpenMP への変換

索引

第 6 章

変数の自動スコープ宣言

OpenMP 構文で参照される変数のデータ共有属性の宣言は、スコープ宣言と呼ばれます。各データ共有属性の説明は、OpenMP 3.0 仕様の 2.9.3 節にあります。

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

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

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

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