Oracle® Solaris Studio 12.4: OpenMP API ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

6.1 変数のスコープ宣言の概要

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

変数を明示的にスコープ宣言することは、特に大規模で複雑なプログラムの場合、手間がかかりミスもしやすくなります。また、データ共有属性の規則によって、予期しない結果が発生することがあります。task ディレクティブを使用すると、スコープ宣言が複雑になり難しくなります。

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

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