!****************************************************************************** ! FILE: omp_bug4.f90 ! DESCRIPTION: ! This very simple program causes a segmentation fault. ! AUTHOR: Blaise Barney 01/09/04 ! LAST REVISED: !****************************************************************************** PROGRAM BUG4 INTEGER N, NTHREADS, TID, I, J, OMP_GET_NUM_THREADS, & OMP_GET_THREAD_NUM PARAMETER(N=1048) REAL*8 A(N,N) ! Fork a team of threads with explicit variable scoping !$OMP PARALLEL SHARED(NTHREADS) PRIVATE(I,J,TID,A) ! Obtain/print thread info TID = OMP_GET_THREAD_NUM() IF (TID .EQ. 0) THEN NTHREADS = OMP_GET_NUM_THREADS() PRINT *, 'Number of threads = ', NTHREADS END IF PRINT *, 'Thread',TID,' starting...' ! Each thread works on its own private copy of the array DO I=1,N DO J=1,N A(J,I) = TID + I + J END DO END DO ! For confirmation PRINT *, 'Thread',TID,'done. Last element=',A(N,N) ! All threads join master thread and disband !$OMP END PARALLEL END