次の方法で共有


1.2 用語の定義

このドキュメントでは、次の用語が使用されています。

  • バリア
    チーム内のすべてのスレッドが到着すべき同期ポイント。各スレッドは、チーム内のすべてのスレッドがこのポイントに到着するまで待機します。ディレクティブによって識別される明示的なバリアと、実装によって作成される暗黙のバリアがあります。

  • コンストラクト
    コンストラクトとはステートメントのことです。コンストラクトは、1 つのディレクティブと、後続の構造化ブロックで構成されます。ディレクティブによってはコンストラクトに含まれないものもあります。付録 Copenmp-directive についての説明を参照してください。

  • ディレクティブ
    omp 識別子、他のテキスト、および改行が続く C または C++ の #pragma。ディレクティブはプログラムの動作を指定します。

  • 動的範囲
    "構文範囲" 内のすべてのステートメントと、構文範囲内のステートメントの実行の結果実行される関数内部のすべてのステートメント。動的範囲は "領域" とも呼ばれます。

  • 構文範囲
    "構造化ブロック" 内に構文的に含まれているステートメント。

  • マスタ スレッド
    "並行領域" に入ったときにチームを作成したスレッド。

  • 並行領域
    OpenMP parallel コンストラクトにバインドされ、複数のスレッドで実行できるステートメント。

  • プライベート
    プライベート変数は、参照するスレッドに対して一意となるストレージ ブロックの名前を示します。変数がプライベートであることを示す方法は複数あります。並行領域内での定義、threadprivate ディレクティブ、private 句、firstprivate 句、lastprivate 句、reduction 句、あるいは、for ディレクティブまたは parallel for ディレクティブの直後の for ループ内の for ループ制御変数としての変数の使用です。

  • 領域
    動的範囲。

  • シリアル領域
    "並行領域" の動的範囲外にある "マスタ スレッド" によってのみ実行されるステートメント。

  • シリアル化
    parallel コンストラクトを、シングル スレッド (parallel コンストラクトのマスタ スレッド) でのみ構成されるスレッド チームで、構造化ブロック内部のステートメントの逐次実行順序 (ブロックが parallel コンストラクトに含まれていなかった場合の順序) で、omp_in_parallel() によって返される値の影響なく (入れ子になった parallel コンストラクトの影響なく)、実行すること。

  • 共有
    共有変数は、単一のストレージ ブロックの名前を示します。この変数にアクセスするチーム内のすべてのスレッドは、この単一のストレージ ブロックにアクセスすることになります。

  • 構造化ブロック
    構造化ブロックは、単一の入り口と出口を持つ (単一または複合) ステートメントです。そのステートメント内外へのジャンプがある (longjmp(3C) の呼び出しや throw の使用など) 場合、構造化ブロックにはなりません。ただし、exit の呼び出しは許可されています。複合ステートメントは、必ず { で始まり } で終わる構造化ブロックです。式ステートメント、選択ステートメント、反復ステートメント、または try ブロックは、{} で囲まれた対応する複合ステートメントが構造化ブロックである場合に、構造化ブロックになります。ジャンプ ステートメント、ラベル付きステートメント、または宣言ステートメントは構造化ブロックではありません。

  • チーム
    1 つのコンストラクトを一緒に実行する 1 つ以上のスレッドの集まり。

  • スレッド
    逐次制御フロー、プライベート変数のセット、および共有変数へのアクセスを持つ実行エンティティ。

  • 変数
    オブジェクトの名前を示す識別子。名前空間名で修飾される場合もあります。