F. Version 2.0 の新機能と説明
この付録では、バージョン 1.0 からバージョン 2.0 に移行する際に OpenMP C/C++ 仕様に加えられた主な変更点をまとめています。 以下の項目は、仕様に追加された新機能です。
OpenMP ディレクティブでコンマを使用できます。
num_threads
句の追加。 この句を使用すると、ユーザーは parallel コンストラクトの特定の数のスレッドを要求できます。threadprivate ディレクティブが拡張され、静的ブロックスコープ変数を受け入れるようになりました。
C99 可変長配列は完全な型であり、
private
、firstprivate
、lastprivate
の各句のリスト内など、完全な型が許可されている場所であればどこでも指定できます (セクション 2.7.2 を参照)。並列領域のプライベート変数は、入れ子になったディレクティブで再度 private としてマークできます。
copyprivate
句が追加されました。 これは、プライベート変数を使用して、チームの 1 つのメンバーから他のメンバーに値をブロードキャストする機構を提供します。 このような共有変数を提供することが難しい場合 (レベルごとに異なる変数を必要とする再帰内など) に、値に共有変数を使用する代わりにこれを使用できます。 copyprivate 句は、single
ディレクティブでのみ使用できます。MPI ルーチンと同様のタイミング ルーチン omp_get_wtick と omp_get_wtime の追加。 これらの関数は、ウォール クロックのタイミングを実行するために必要です。
OpenMP C/C++ の実装で定義される動作の一覧を含む付録が追加されました。 これらのケースでは、実装で動作を定義して文書化する必要があります。
次の変更は、C/C++ の以前の OpenMP API 仕様の機能を明確化または修正したものです。
omp_in_parallel
が 0 以外を返したときの omp_set_nested と omp_set_dynamic の動作が未定義であることを明確にしました。入れ子になった parallel を使用するときのディレクティブの入れ子を明確にしました。
付録 A に新しい例が追加されました。