blob: a7502c7450e8fd4547631a346de4e071f2599845 [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription>Test which checks the omp single private directive.</ompts:testdescription>
3<ompts:ompversion>2.0</ompts:ompversion>
4<ompts:directive>omp singel private</ompts:directive>
5<ompts:dependences>omp critical,omp flush,omp single nowait</ompts:dependences>
6<ompts:testcode>
7#include <stdio.h>
8#include "omp_testsuite.h"
9
10int myit = 0;
11#pragma omp threadprivate(myit)
12int myresult = 0;
13#pragma omp threadprivate(myresult)
14
15int <ompts:testcode:functionname>omp_single_private</ompts:testcode:functionname>(FILE * logFile)
16{
17 <ompts:orphan:vars>
18 int nr_threads_in_single;
19 int result;
20 int nr_iterations;
21 </ompts:orphan:vars>
22 int i;
23
24 myit = 0;
25 nr_threads_in_single = 0;
26 nr_iterations = 0;
27 result = 0;
28
29#pragma omp parallel private(i)
30 {
31 myresult = 0;
32 myit = 0;
33 for (i = 0; i < LOOPCOUNT; i++)
34 {
35 <ompts:orphan>
36#pragma omp single <ompts:check>private(nr_threads_in_single) </ompts:check>nowait
37 {
38 nr_threads_in_single = 0;
39#pragma omp flush
40 nr_threads_in_single++;
41#pragma omp flush
42 myit++;
43 myresult = myresult + nr_threads_in_single;
44 } /* end of single */
45 </ompts:orphan>
46 } /* end of for */
47#pragma omp critical
48 {
49 result += nr_threads_in_single;
50 nr_iterations += myit;
51 }
52 } /* end of parallel */
53 return ((result == 0) && (nr_iterations == LOOPCOUNT));
54} /* end of check_single private */
55</ompts:testcode>
56</ompts:test>