+----------------------------------IBM 拡張----------------------------------+


OpenMP 実行環境ルーチンおよびロック・ルーチン

OpenMP 仕様は、 並列的な実行環境の制御および照会を可能にする多数のルーチンを提供します。

OpenMP インターフェースを介して実行時環境で作成される 並列スレッドは、Fortran Pthreads ライブラリー・モジュール呼び出しを 使用して作成および制御されるスレッドとは別のものと見なされます。 以下の説明において「プログラムの直列部分」とは、 実行時環境で作成されたいずれか 1 つのスレッドのみによって実行される、 プログラムの部分という意味です。 たとえば、 f_pthread_create を使用して複数のスレッドを作成することができます。しかし、その後に OpenMP 並列ブロックの外から、 または逐次化されネストされた並列領域内から omp_get_num_threads を 呼び出す場合、この関数は、 現在実行中のスレッド数にかかわらず 1 を戻します。

表 29. OpenMP 実行環境ルーチン

omp_get_dynamic
omp_get_max_threads
omp_get_nested
omp_get_num_procs
omp_get_num_threads
omp_get_thread_num
omp_in_parallel
omp_set_dynamic
omp_set_nested
omp_set_num_threads

OpenMP 実行時ライブラリーには、 ポータブル壁時計タイマーをサポートする 2 つのルーチンが含まれます。


表 30. OpenMP タイミング・ルーチン

omp_get_wtick
omp_get_wtime

さらに、OpenMP 実行時ライブラリーは、 1 組の単純ロック・ルーチンとネスト可能ロック・ルーチンをサポートします。変数のロックは、これらのルーチンを介してのみ行ってください。 単純ロックでは、それらがすでにロック状態にある場合は、ロックされません。 単純ロック変数は、単純ロックに関連しており、 単純ロック・ルーチンにのみ渡すことができます。ネスト可能なロックは、 同じスレッドによって複数回ロックすることができます。 ネスト可能ロック変数は、ネスト可能ロックに関連しており、 ネスト可能ロック・ルーチンにのみ渡すことができます。

以下にリストされたすべてのルーチンについて、ロック変数は、KIND 型付きパラメーターが シンボリック定数 omp_lock_kind または omp_nest_lock_kind で表される整数です。

この変数は、コンパイル・モードに従ってサイズ変更されます。これは、32 ビット・アプリケーションでは「4」に設定され、64 ビット・アプリケーションでは「8」に設定されます。

表 31. OpenMP シンプル・ロック・ルーチン

omp_destroy_lock
omp_init_lock
omp_set_lock
omp_test_lock
omp_unset_lock

表 32. OpenMP ネスト可能ロック・ルーチン

omp_destroy_nest_lock
omp_init_nest_lock
omp_set_nest_lock
omp_test_nest_lock
omp_unset_nest_lock
注:
ユーザー独自のバージョンの OpenMP ルーチンを定義して インプリメントすることができます。 ただし、(-qnoswapomp コンパイラー・オプションを 指定しない限り) デフォルトでは、他のインプリメントが存在するかどうかにかかわらず、 コンパイラーは OpenMP ルーチンの XL Fortran バージョンに置換します。詳細については、「XL Fortran ユーザーズ・ガイド」を参照してください。

IBM Copyright 2003