brintos

brintos / llvm-project-archived public Read only

0
0
Text · 730 B · f889ae2 Raw
44 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include <stdlib.h>4#include <omp.h>5 6int a;7 8void inc_a() {9#pragma omp task10  {11#pragma omp atomic12    a++;13  }14}15 16int main() {17  int n;18  int nth_outer;19  omp_set_max_active_levels(2);20  omp_set_dynamic(0);21 22  for (n = 0; n < 200; ++n) {23    a = 0;24#pragma omp parallel num_threads(8)25    {26      if (omp_get_thread_num() == 0)27        nth_outer = omp_get_num_threads();28#pragma omp parallel num_threads(2)29      {30        int i;31#pragma omp master32        for (i = 0; i < 50; ++i)33          inc_a();34      }35    }36    if (a != nth_outer * 50) {37      fprintf(stderr, "error: a (%d) != %d\n", a, nth_outer * 50);38      return EXIT_FAILURE;39    }40  }41 42  return EXIT_SUCCESS;43}44