blob: cdac323240eebef35050ddfe6593264a0039fe84 [file] [log] [blame]
Andrzej Warzynski96d229c2021-02-04 11:14:57 +00001! RUN: %flang_fc1 -fdebug-unparse-with-symbols %s 2>&1 | FileCheck %s
Andrzej Warzynskie7be90b2021-04-12 12:27:49 +00002! RUN: %flang_fc1 -fopenmp -fdebug-unparse-with-symbols %s 2>&1 | FileCheck %s
Eric Schweitz76fc3ab2018-10-10 11:44:15 -07003! CHECK-NOT: do *[1-9]
4
5program P
6implicit none
7integer OMP_GET_NUM_THREADS, OMP_GET_THREAD_NUM
8integer NUMTHRDS, TID
9integer N, CSZ, CNUM, I
10parameter (N=100)
11parameter (CSZ=10)
12real A(N), B(N), C(N)
13
14do 10 I = 1, N
15 A(I) = I * 1.0
1610 continue
17
18B = A
19CNUM = CSZ
20
21!$OMP PARALLEL SHARED(A,B,C,NUMTHRDS,CNUM) PRIVATE(I,TID)
22TID = OMP_GET_THREAD_NUM()
23if (TID .EQ. 0) then
24 NUMTHRDS = OMP_GET_NUM_THREADS()
25 print *, "Number of threads =", NUMTHRDS
26end if
27print *, "Thread", TID, " is starting..."
28
29!$OMP DO SCHEDULE(DYNAMIC,CNUM)
30do 20 I = 1, N
31 C(I) = A(I) + B(I)
32 write (*,100) TID, I, C(I)
3320 continue
34!$OMP END DO NOWAIT
35
36print *, "Thread", TID, " done."
37
38!$OMP END PARALLEL
39100 format(" Thread", I2, ": C(", I3, ")=", F8.2)
40end program P