Mercurial > hg > CbC > CbC_gcc
comparison libgomp/testsuite/libgomp.fortran/omp_workshare1.f @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 C****************************************************************************** | |
2 C FILE: omp_workshare1.f | |
3 C DESCRIPTION: | |
4 C OpenMP Example - Loop Work-sharing - Fortran Version | |
5 C In this example, the iterations of a loop are scheduled dynamically | |
6 C across the team of threads. A thread will perform CHUNK iterations | |
7 C at a time before being scheduled for the next CHUNK of work. | |
8 C AUTHOR: Blaise Barney 5/99 | |
9 C LAST REVISED: 01/09/04 | |
10 C****************************************************************************** | |
11 | |
12 PROGRAM WORKSHARE1 | |
13 | |
14 INTEGER NTHREADS, TID, OMP_GET_NUM_THREADS, | |
15 + OMP_GET_THREAD_NUM, N, CHUNKSIZE, CHUNK, I | |
16 PARAMETER (N=100) | |
17 PARAMETER (CHUNKSIZE=10) | |
18 REAL A(N), B(N), C(N) | |
19 | |
20 ! Some initializations | |
21 DO I = 1, N | |
22 A(I) = I * 1.0 | |
23 B(I) = A(I) | |
24 ENDDO | |
25 CHUNK = CHUNKSIZE | |
26 | |
27 !$OMP PARALLEL SHARED(A,B,C,NTHREADS,CHUNK) PRIVATE(I,TID) | |
28 | |
29 TID = OMP_GET_THREAD_NUM() | |
30 IF (TID .EQ. 0) THEN | |
31 NTHREADS = OMP_GET_NUM_THREADS() | |
32 PRINT *, 'Number of threads =', NTHREADS | |
33 END IF | |
34 PRINT *, 'Thread',TID,' starting...' | |
35 | |
36 !$OMP DO SCHEDULE(DYNAMIC,CHUNK) | |
37 DO I = 1, N | |
38 C(I) = A(I) + B(I) | |
39 WRITE(*,100) TID,I,C(I) | |
40 100 FORMAT(' Thread',I2,': C(',I3,')=',F8.2) | |
41 ENDDO | |
42 !$OMP END DO NOWAIT | |
43 | |
44 PRINT *, 'Thread',TID,' done.' | |
45 | |
46 !$OMP END PARALLEL | |
47 | |
48 END |