LLVM OpenMP 20.0.0git
omp_in_parallel.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 * Checks that false is returned when called from serial region
7 * and true is returned when called within parallel region.
8 */
10{
11 int serial;
12 int isparallel;
13
14 serial = 1;
15 isparallel = 0;
16 serial = omp_in_parallel();
17
18 #pragma omp parallel
19 {
20 #pragma omp single
21 {
22 isparallel = omp_in_parallel();
23 }
24 }
25 return (!(serial) && isparallel);
26}
27
28int main()
29{
30 int i;
31 int num_failed=0;
32
33 // the test requires more than 1 thread to pass
34 omp_set_dynamic(0); // disable dynamic adjustment of threads
35 if (omp_get_max_threads() == 1)
36 omp_set_num_threads(2); // set 2 threads if no HW resources available
37
38 for(i = 0; i < REPETITIONS; i++) {
40 num_failed++;
41 }
42 }
43 return num_failed;
44}
#define i
Definition: kmp_stub.cpp:87
#define omp_set_num_threads
Definition: kmp_stub.cpp:34
#define omp_set_dynamic
Definition: kmp_stub.cpp:35
int main()
int test_omp_in_parallel()
#define REPETITIONS
Definition: omp_testsuite.h:13
int omp_get_max_threads()