export OMP_NUM_THREADS=2

gfortran-gomp -v Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc/configure --prefix=/usr/local/gomp
--program-suffix=-gomp --enable-threads=posix --enable-languages=c,c++,fortran
Thread model: posix
gcc version 4.2.0-gomp-20050608-branch 20051126 (experimental) (merged
20051124)

It seems as if the COPYIN statement is never executed in this test-program.

      PROGRAM TEST4
C
      CALL TEST1
C
      CALL TEST2
C
      END
C
      SUBROUTINE TEST1
C
      DOUBLE PRECISION BPRIM
      COMMON /TESTCOM/ BPRIM(100)
C$OMP THREADPRIVATE(/TESTCOM/)
C
      INTEGER I
C
      DO I = 1, 100
         BPRIM( I ) = DBLE( I )
      END DO
C
      RETURN
      END
C
      SUBROUTINE TEST2
C
      DOUBLE PRECISION BPRIM
      COMMON /TESTCOM/ BPRIM(100)
C$OMP THREADPRIVATE(/TESTCOM/)
C
      INTEGER I, IDUM(50)
C
      DO I = 1, 50
         IDUM(I) = I
      END DO
C
C$OMP PARALLEL COPYIN(/TESTCOM/)
C
      CALL TEST3
C$OMP END PARALLEL
C
      RETURN
      END
C
      SUBROUTINE TEST3
C
      DOUBLE PRECISION BPRIM
      COMMON /TESTCOM/ BPRIM(100)
C$OMP THREADPRIVATE(/TESTCOM/)
C
      INTEGER K
C
      DO K = 1, 10
         PRINT *,K,BPRIM(K)
      END DO
C
      RETURN
      END

Running it produces the following results:
           1   0.00000000000000
           2   0.00000000000000
           3   0.00000000000000
           4   0.00000000000000
           5   0.00000000000000
           6   0.00000000000000
           7   0.00000000000000
           8   0.00000000000000
           9   0.00000000000000
          10   0.00000000000000
           1   1.00000000000000
           2   2.00000000000000
           3   3.00000000000000
           4   4.00000000000000
           5   5.00000000000000
           6   6.00000000000000
           7   7.00000000000000
           8   8.00000000000000
           9   9.00000000000000
          10   10.0000000000000

Running it on Intel FORTRAN 9 produces more expected results:
           1   1.00000000000000
           2   2.00000000000000
           3   3.00000000000000
           4   4.00000000000000
           5   5.00000000000000
           6   6.00000000000000
           7   7.00000000000000
           8   8.00000000000000
           9   9.00000000000000
          10   10.0000000000000
           1   1.00000000000000
           2   2.00000000000000
           3   3.00000000000000
           4   4.00000000000000
           5   5.00000000000000
           6   6.00000000000000
           7   7.00000000000000
           8   8.00000000000000
           9   9.00000000000000
          10   10.0000000000000


-- 
           Summary: Issue with OpenMP COPYIN and gfortran
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libgomp
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: magnus_os at yahoo dot se


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25162

Reply via email to