インテル® C++ コンパイラー 16.0 ユーザー・リファレンス・ガイド

omp sections

チーム内のスレッド間で分配される構造化ブロック領域を定義します。

構文

#pragma omp sections [clause,clause , ...]

[!$omp section]

structured-block

[!$omp section]

structured-block

...

引数

clause

次の 1 つまたは複数の clause を指定できます。

firstprivate(list)

private 節で指定される機能のスーパーセットを指定します。各プライベート・データ・オブジェクトはオリジナルのオブジェクトの値を使用して初期化されます。

lastprivate(list)

private 節で指定される機能のスーパーセットを指定します。領域を出る時点で、オリジナルのオブジェクトは、関連付けられたループシーケンスの最後の反復、または記述上における最後のセクション構造のプライベート・コピーの値で更新されます。

nowait

ワークシェア領域の最後で実装がバリアを省略できるようにします。

private(list)

チーム内の各スレッドに対して変数を private にすることを宣言します。

reduction(operator:list)

スカラー変数の削減を実行します。

説明

sections 構造は、並列に実行する structured-block セクションのセットを囲みます。sections 構造は、チーム内の 1 つのスレッドにより 1 回だけ実行されます。

3 つの異なる方法で並列に検索を実行する例

#include <omp.h>
int found_method1, found_method2, found_method3;

#pragma omp parallel num_threads(3) {
 	#pragma omp sections {
	  	#pragma omp section
		  found_method1 = method1_search();

		  #pragma omp section
  		found_method2 = method2_search();

		  #pragma omp section
		  found_method3 = method3_search();
	 }
}
if (found_method1) { printf(“Found with method 1\n”); }
if (found_method2) { printf(“Found with method 2\n”); }
if (found_method3) { printf(“Found with method 3\n”); }