次の方法で共有


if (OpenMP)

ループを並列実行するか逐次実行するかを指定します。

if(expression)

解説

指定項目

  • expression
    true (0 以外の値) に評価される場合、並行領域内のコードが並列実行される整数式。式が false (0) に評価される場合、並行領域は逐次実行されます (シングル スレッドで実行されます)。

解説

if は次のディレクティブに適用されます。

詳細については、「2.3 parallel コンストラクト」を参照してください。

使用例

// omp_if.cpp
// compile with: /openmp
#include <stdio.h>
#include <omp.h>

void test(int val)
{
    #pragma omp parallel if (val)
    if (omp_in_parallel())
    {
        #pragma omp single
        printf_s("val = %d, parallelized with %d threads\n",
                 val, omp_get_num_threads());
    }
    else
    {
        printf_s("val = %d, serialized\n", val);
    }
}

int main( )
{
    omp_set_num_threads(2);
    test(0);
    test(2);
}

val = 0, serialized
val = 2, parallelized with 2 threads

参照

概念

OpenMP 句