Mercurial > hg > CbC > CbC_gcc
comparison libgomp/testsuite/libgomp.c/thread-limit-2.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-do run } */ | |
2 /* { dg-set-target-env-var OMP_THREAD_LIMIT "9" } */ | |
3 | |
4 #include <stdlib.h> | |
5 #include <unistd.h> | |
6 #include <omp.h> | |
7 | |
8 int | |
9 main () | |
10 { | |
11 if (omp_get_thread_limit () != 9) | |
12 return 0; | |
13 omp_set_dynamic (0); | |
14 #pragma omp parallel num_threads (8) | |
15 if (omp_get_num_threads () != 8) | |
16 abort (); | |
17 #pragma omp parallel num_threads (16) | |
18 if (omp_get_num_threads () > 9) | |
19 abort (); | |
20 #pragma omp target if (0) | |
21 #pragma omp teams thread_limit (6) | |
22 { | |
23 if (omp_get_thread_limit () > 6) | |
24 abort (); | |
25 if (omp_get_thread_limit () == 6) | |
26 { | |
27 omp_set_dynamic (0); | |
28 omp_set_nested (1); | |
29 #pragma omp parallel num_threads (3) | |
30 if (omp_get_num_threads () != 3) | |
31 abort (); | |
32 #pragma omp parallel num_threads (3) | |
33 if (omp_get_num_threads () != 3) | |
34 abort (); | |
35 #pragma omp parallel num_threads (8) | |
36 if (omp_get_num_threads () > 6) | |
37 abort (); | |
38 #pragma omp parallel num_threads (6) | |
39 if (omp_get_num_threads () != 6) | |
40 abort (); | |
41 int cnt = 0; | |
42 #pragma omp parallel num_threads (5) | |
43 #pragma omp parallel num_threads (5) | |
44 #pragma omp parallel num_threads (2) | |
45 { | |
46 int v; | |
47 #pragma omp atomic capture | |
48 v = ++cnt; | |
49 if (v > 6) | |
50 abort (); | |
51 usleep (10000); | |
52 #pragma omp atomic | |
53 --cnt; | |
54 } | |
55 } | |
56 } | |
57 return 0; | |
58 } |