nowait 子句
如果在一个平行区域内有多个独立的循环,您可以使用 nowait
子句来避免循环构造末尾的隐含同步(barrier),如下所示:
// desc: The nowait Clause
// file: omp_nowait.1.cpp
#include <cstdio>
#include <cmath>
#include <omp.h>
#define N 10240
void nowait_example(int n, int m, float* a, float* b, float* x, float* y) {
int i;
#pragma omp parallel
{
printf("--- for1 ---\n");
#pragma omp for nowait
// #pragma omp for
for (i = 1; i < n; ++i)
b[i] = (a[i] + a[i+1]) / 2.0;
printf("--- for2 ---\n");
#pragma omp for nowait
// #pragma omp for
for (i = 1; i < m; ++i)
y[i] = sqrt(x[i]);
}<