xref: /openbsd-src/gnu/gcc/libgomp/testsuite/libgomp.fortran/omp_hello.f (revision 404b540a9034ac75a6199ad1a32d1bbc7a0d4210)
1*404b540aSrobertC******************************************************************************
2*404b540aSrobertC FILE: omp_hello.f
3*404b540aSrobertC DESCRIPTION:
4*404b540aSrobertC   OpenMP Example - Hello World - Fortran Version
5*404b540aSrobertC   In this simple example, the master thread forks a parallel region.
6*404b540aSrobertC   All threads in the team obtain their unique thread number and print it.
7*404b540aSrobertC   The master thread only prints the total number of threads.  Two OpenMP
8*404b540aSrobertC   library routines are used to obtain the number of threads and each
9*404b540aSrobertC   thread's number.
10*404b540aSrobertC AUTHOR: Blaise Barney  5/99
11*404b540aSrobertC LAST REVISED:
12*404b540aSrobertC******************************************************************************
13*404b540aSrobert
14*404b540aSrobert      PROGRAM HELLO
15*404b540aSrobert
16*404b540aSrobert      INTEGER NTHREADS, TID, OMP_GET_NUM_THREADS,
17*404b540aSrobert     +        OMP_GET_THREAD_NUM
18*404b540aSrobert
19*404b540aSrobertC     Fork a team of threads giving them their own copies of variables
20*404b540aSrobert!$OMP PARALLEL PRIVATE(NTHREADS, TID)
21*404b540aSrobert
22*404b540aSrobert
23*404b540aSrobertC     Obtain thread number
24*404b540aSrobert      TID = OMP_GET_THREAD_NUM()
25*404b540aSrobert      PRINT *, 'Hello World from thread = ', TID
26*404b540aSrobert
27*404b540aSrobertC     Only master thread does this
28*404b540aSrobert      IF (TID .EQ. 0) THEN
29*404b540aSrobert        NTHREADS = OMP_GET_NUM_THREADS()
30*404b540aSrobert        PRINT *, 'Number of threads = ', NTHREADS
31*404b540aSrobert      END IF
32*404b540aSrobert
33*404b540aSrobertC     All threads join master thread and disband
34*404b540aSrobert!$OMP END PARALLEL
35*404b540aSrobert
36*404b540aSrobert      END
37