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