OpenMP* ランタイム・ライブラリ・ルーチン

OpenMP* では、並列モードでプログラムを管理するためのランタイム・ライブラリ・ルーチンをいくつか用意しています。これらの関数の多くは、デフォルトとして設定できる環境変数を持っています。これらの環境変数はランタイム・ライブラリ関数によって、動的に変更できます。いかなる場合も、ランタイム・ライブラリ・ルーチンが呼び出されると、それに対応する環境変数は無効になります。

次の表は、これらランタイム・ライブラリ・ルーチンとのインターフェイスを明記したものです。ルーチン名はユーザ名前空間に保存しています。コンパイラをインストールしたINCLUDEディレクトリにomp.hおよびomp_lib.hヘッダファイルがあります。

この表中の関数に使用する2つの異なるロック( lock )である omp_lock_kindomp_nest_lock_kind には、定義がいくつかあります。

関数 説明

実行環境ルーチン

omp_set_num_threads(nthreads) 後続の並列領域に使用するスレッド数を設定します。
omp_get_num_threads() 現在の並列領域に使用されているスレッドの数を返します。
omp_get_max_threads() 並列実行に利用可能なスレッドの最大数を返します。
omp_get_thread_num() コードのこのセクションを現在実行しているスレッドはどれか、その固有番号を返します。
omp_get_num_procs() プログラムに利用可能なプロセッサの数を返します。
omp_in_parallel() 並列で実行する並列領域の動的範囲内で呼び出された場合は TRUE を返します。そうでない場合は FALSEを返します。
omp_set_dynamic(dynamic_threads) 並列領域の実行に使用するスレッド数の動的な調整を有効または無効にします。dynamic_threadsTRUEの場合は、ダイナミック・スレッドは有効です。dynamic_threadsFALSEの場合は、ダイナミック・スレッドは無効ですダイナミック・スレッドはデフォルトでは無効です。
omp_get_dynamic() 動的なスレッド調整が有効の場合は、TRUEを返します。そうでない場合、FALSEを返します。
omp_set_nested(nested) ネストされた並列処理を有効または無効にします nestedTRUEの場合は、ネストされた並列処理は有効です。 nestedFALSEの場合は、ネストされた並列処理は無効です。ネストされた並列処理はデフォルトでは無効です。
omp_get_nested() ネストされた並列処理が有効な場合 TRUE を返します。そうでない場合、 FALSEを返します。

ロックルーチン

omp_init_lock(lock) 後続の呼び出しに使用する lock に関連付けられたロックを初期化します。
omp_destroy_lock(lock) lock に関連付けられたロックを未定義にします。
omp_set_lock(lock) lock に関連付けられているロックが使用可能な状態になるまで実行中のスレッドを強制的に待機させます。ロックが使用可能になると、スレッドにはそのロックの所有権が与えられます。
omp_unset_lock(lock) lock に関連付けられているロックの所有権から実行スレッドを解放します。lock に関連付けられたロックを実行中のスレッドが所有していない場合の動作は不定です。
omp_test_lock(lock lock に関連付けられているロックを設定しようと試みます。成功した場合、 TRUEを返します。そうでない場合、FALSEを返します。
omp_init_nest_lock(lock) 後続の呼び出しに使用する lock に関連付けられたネストされたロックを初期化します。
omp_destroy_nest_lock(lock) lock に関連付けられたネストされたロックを未定義にします。
omp_set_nest_lock(lock) lock に関連付けられているネストされたロックが使用可能な状態になるまで実行中のスレッドを強制的に待機させます。ロックが使用可能になると、スレッドにはそのネストされたロックの所有権が与えられます。
omp_unset_nest_lock(lock) ネストしているカウント数がゼロの場合は、lock に関連付けられたネストされたロックの所有権から実行中のスレッドを解放します。lock に関連付けられたネストされたロックを実行中のスレッドが所有していない場合の動作は不定です。
omp_test_nest_lock(lock) lockに関連付けられているネストされたロックを設定しようと試みます。成功した場合はネスト数を返し、失敗した場合は0を返します。

タイミング・ルーチン

omp_get_wtime() 任意の参照時間から経過したウォールクロック時間(秒)に等しい倍精度値を返します。参照時間は、プログラム実行中には変更されません。
omp_get_wtick() 連続するクロック刻みの間隔の秒数に等しい倍精度値を返します。