blob: 0878a66a807dacd27f299f3d3ccfafc0a810762e [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription>Test which checks the omp single copyprivate directive.</ompts:testdescription>
3<ompts:ompversion>2.0</ompts:ompversion>
4<ompts:directive>omp single copyprivate</ompts:directive>
5<ompts:dependences>omp parllel,omp critical</ompts:dependences>
6<ompts:testcode>
7 INTEGER FUNCTION <ompts:testcode:functionname>single_copyprivate</ompts:testcode:functionname>()
8 IMPLICIT NONE
9 INTEGER omp_get_thread_num
10 INCLUDE "omp_testsuite.f"
11<ompts:orphan:vars>
12 INTEGER i,j,thread,nr_iterations,result
13 COMMON /orphvars/ nr_iterations,result
14</ompts:orphan:vars>
15
16 result=0
17 nr_iterations=0
18
19!$omp parallel private(i,j,thread)
20 <ompts:orphan>
21 DO i=0,LOOPCOUNT-1
22 thread=OMP_GET_THREAD_NUM()
23!$omp single
24 nr_iterations=nr_iterations+1
25 j=i
26!$omp end single <ompts:check>copyprivate(j)</ompts:check>
27!$omp critical
28 result=result+j-i;
29!$omp end critical
30 END DO
31 </ompts:orphan>
32!$omp end parallel
33 IF(result .EQ. 0 .AND.
34 & nr_iterations .EQ. LOOPCOUNT) THEN
35 <testfunctionname></testfunctionname>=1
36 ELSE
37 <testfunctionname></testfunctionname>=0
38 END IF
39 END FUNCTION
40</ompts:testcode>
41</ompts:test>