3.1.7 omp_set_dynamic 関数

omp_set_dynamic の関数は並列領域の実行に使用できるスレッドの数の動的調整を有効または無効にします。形式は次のとおりです。

#include <omp.h>
void omp_set_dynamic(int dynamic_threads);

dynamic_threads が 以外の値に評価するとその後の並列領域を実行するために使用されるスレッドの数はさまざまなランタイム環境で使用するシステム リソースを自動的に調整されることがあります。結果としてユーザーが指定したスレッドの数は最大スレッド数です。並列領域を実行中のチーム内のスレッドの数は並列領域の期間に固定されたままomp_get_num_threads の関数によって報告されます。

dynamic_threads が 0 に評価された場合動的な場合は無効になります。

プログラムの部分から呼び出されたとき omp_in_parallel 関数の戻り値をこの関数は前に説明した結果になります。これは omp_in_parallel 関数の戻り値が以外の値この関数の動作は未定義にするプログラムの部分から呼び出されます。

omp_set_dynamic の呼び出しに OMP_DYNAMIC の環境変数上の方が優先されます。

スレッドを動的に調整の既定値は実装定義されます。その結果正しい実装のスレッドの特定の数値に依存しているユーザー コードは明示的に動的なスレッドを無効にする必要があります。実装は動的にスレッド数を調整する機能を提供する必要はありませんがすべてのプラットフォーム間の移植性をサポートするためのインターフェイスを提供する必要があります。

cref: