Sun Studio 12 Update 1: OpenMP API ユーザーズガイド

5.5.4 データスコープ属性

OpenMP 3.0 仕様のバージョン 3.0 (セクション 2.9) には、parallel、task、および worksharing 領域で参照される変数のデータ共有属性の決定方法が説明されています。

コンストラクト中で参照される変数のデータ共有属性は、事前定義明示的定義、または暗黙的定義のいずれかです。明示的に指定されたデータ共有属性を持つ変数は、指定されたコンストラクトの中で参照される変数で、コンストラクト上のデータ共有属性節にリストされています。暗黙的に指定されたデータ共有属性を持つ変数は、指定されたコンストラクトの中で参照される変数で、事前に決められたデータ共有属性を持たず、コンストラクト上のデータ共有属性節にリストがありません。

変数のデータ共有属性を暗黙的に決める方法についてのルールは、いつでも明確に決まっているわけではありません (「「5.2 データ環境」」の項を参照)。このため、予期せぬ事態を避けるため、プログラマは OpenMP の暗黙的なスコープルールに頼るのではなく、task コンストラクトの中で参照されるすべての変数に対して明示的にスコープを宣言 (defaultsharedprivate、および firstprivate 節を使用) することをお勧めします。