ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: OpenMP API ユーザーガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
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 構文で参照される変数にも拡張されました。