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

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

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

適切なヘッダーファイルをインクルードするには、次のような文をコードに追加する必要があります。

#include <omp.h>

#include <omp_lib.h>

ここでは、OpenMP ランタイム・ライブラリー・ルーチンの概要を説明します。詳細は、OpenMP C/C++ バージョン 2.5 仕様 (http://www.openmp.org/specs) を参照してください。

実行環境ルーチン

関数

説明

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()

連続するクロック刻みの間隔の秒数に等しい倍精度値を返します。