blob: dd39ab9843877d24799661d47ec64f001e152615 [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription>Test which checks the omp parallel do private directive.</ompts:testdescription>
3<ompts:ompversion>2.0</ompts:ompversion>
4<ompts:directive>omp parallel do private</ompts:directive>
5<ompts:dependences>par do reduction,omp flush</ompts:dependences>
6<ompts:testcode>
7 SUBROUTINE do_some_work2()
8 IMPLICIT NONE
9 REAL i
10 DOUBLE PRECISION sum
11 INTRINSIC sqrt
12 INCLUDE "omp_testsuite.f"
13 sum = 0.0
14 i = 0
15 DO WHILE (i < LOOPCOUNT)
16 sum = sum + sqrt(i)
17 i = i + 1
18 END DO
19 END
20
21!********************************************************************
22
23 INTEGER FUNCTION <ompts:testcode:functionname>par_do_private</ompts:testcode:functionname>()
24 IMPLICIT NONE
25 INTEGER sum,known_sum, i, i2, i3
26 INCLUDE "omp_testsuite.f"
27 sum = 0
28
29!$omp parallel do reduction(+:sum) <ompts:check>private(i2)</ompts:check> schedule(static,1)
30 DO i=1, LOOPCOUNT
31 i2 = i
32!$omp flush
33 CALL do_some_work2()
34!$omp flush
35 sum = sum + i2
36 END DO
37!$omp end parallel do
38 known_sum = (LOOPCOUNT*(LOOPCOUNT+1))/2
39 IF ( known_sum .EQ. sum ) THEN
40 <testfunctionname></testfunctionname> = 1
41 ELSE
42 <testfunctionname></testfunctionname> = 0
43 END IF
44 END
45</ompts:testcode>
46</ompts:test>