LLVM OpenMP 19.0.0git
omp_nested.c
Go to the documentation of this file.
1// RUN: %libomp-compile-and-run
2#include <stdio.h>
3#include "omp_testsuite.h"
4
5/*
6 * Test if the compiler supports nested parallelism
7 * By Chunhua Liao, University of Houston
8 * Oct. 2005
9 */
11{
12#ifdef _OPENMP
13 if (omp_get_max_threads() > 4)
15 if (omp_get_max_threads() < 2)
17#endif
18
19 int counter = 0;
20#ifdef _OPENMP
22 omp_set_max_active_levels(omp_get_supported_active_levels());
23#endif
24
25 #pragma omp parallel shared(counter)
26 {
27 #pragma omp critical
28 counter++;
29 #pragma omp parallel
30 {
31 #pragma omp critical
32 counter--;
33 }
34 }
35 return (counter != 0);
36}
37
38int main()
39{
40 int i;
41 int num_failed=0;
42
43 for(i = 0; i < REPETITIONS; i++) {
44 if(!test_omp_nested()) {
45 num_failed++;
46 }
47 }
48 return num_failed;
49}
#define i
Definition: kmp_stub.cpp:87
#define omp_set_max_active_levels
Definition: kmp_stub.cpp:29
#define omp_set_num_threads
Definition: kmp_stub.cpp:34
#define omp_set_nested
Definition: kmp_stub.cpp:36
int counter
Definition: kmp_taskloop.c:13
int test_omp_nested()
Definition: omp_nested.c:10
int main()
Definition: omp_nested.c:38
#define REPETITIONS
Definition: omp_testsuite.h:13
int omp_get_max_threads()