blob: d9c721d0a1c57701df23e6a731a8fadbb11eb432 [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription>Test which checks the omp parallel sections lastprivate directive.</ompts:testdescription>
3<ompts:ompversion>2.0</ompts:ompversion>
4<ompts:directive>omp parallel sections lastprivate</ompts:directive>
5<ompts:dependences>omp critical,omp parallel sections private</ompts:dependences>
6<ompts:testcode>
7 INTEGER FUNCTION <ompts:testcode:functionname>par_section_lastprivate</ompts:testcode:functionname>()
8 IMPLICIT NONE
9 INTEGER sum, sum0, known_sum, i ,i0
10 sum = 0
11 sum0 = 0
12 i0 = -1
13!$omp parallel sections <ompts:check>lastprivate(i0)</ompts:check><ompts:crosscheck>private(i0)</ompts:crosscheck> private(i,sum0)
14!$omp section
15 sum0 = 0
16 DO i=1, 399
17 sum0 = sum0 + i
18 i0=i
19 END DO
20!$omp critical
21 sum = sum + sum0
22!$omp end critical
23!$omp section
24 sum0 = 0
25 DO i=400, 699
26 sum0 = sum0 + i
27 i0 = i
28 END DO
29!$omp critical
30 sum = sum + sum0
31!$omp end critical
32!$omp section
33 sum0 = 0
34 DO i=700, 999
35 sum0 = sum0 + i
36 i0 = i
37 END DO
38!$omp critical
39 sum = sum + sum0
40!$omp end critical
41!$omp end parallel sections
42 known_sum = (999*1000)/2
43! print *, "sum", sum, "ks", known_sum, i0
44 IF ( known_sum .EQ. sum .AND. i0 .EQ. 999 ) THEN
45 <testfunctionname></testfunctionname> = 1
46 ELSE
47 <testfunctionname></testfunctionname> = 0
48 END IF
49 END
50</ompts:testcode>
51</ompts:test>