blob: 0b7fc9af705f6e549d1ecb75bb7a708f70d70e35 [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription>Test which checks the omp parallel for if directive. Needs at least two threads.</ompts:testdescription>
3<ompts:ompversion>2.0</ompts:ompversion>
4<ompts:directive>omp parallel do if</ompts:directive>
5<ompts:dependences></ompts:dependences>
6<ompts:testcode>
7 INTEGER FUNCTION <ompts:testcode:functionname>par_do_if</ompts:testcode:functionname>()
8 IMPLICIT NONE
9 INTEGER omp_get_num_threads
10 INTEGER sum,known_sum, i, num_threads
11 INTEGER control
12 INCLUDE "omp_testsuite.f"
13 sum = 0
14
15 control = 0
16!$omp parallel do <ompts:check>if (control == 1)</ompts:check>
17 DO i=1, LOOPCOUNT
18 sum = sum + i
19 num_threads = omp_get_num_threads ()
20 END DO
21!$omp end parallel do
22 WRITE (1,*) "Number of threads determined by:"\
23 "omg_get_num_threasd:", num_threads
24 known_sum = (LOOPCOUNT*(LOOPCOUNT+1))/2
25 IF ( known_sum .EQ. sum .AND. num_threads .EQ. 1) THEN
26 <testfunctionname></testfunctionname> = 1
27 ELSE
28 <testfunctionname></testfunctionname> = 0
29 END IF
30 END
31</ompts:testcode>
32</ompts:test>