[Bug fortran/49159] New: OpenMP compilation errors

Jose.Pascual-Gutierr@1-ACT.com gcc-bugzilla@gcc.gnu.org
Wed May 25 13:45:00 GMT 2011


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

           Summary: OpenMP compilation errors
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: Jose.Pascual-Gutierr@1-ACT.com


I have the following OpenMP Fortran95 test program called test.f90. 

PROGRAM test
USE OMP_LIB, ONLY: OMP_SET_NUM_THREADS
IMPLICIT NONE

  INTEGER, PARAMETER :: numthreds = 4
  INTEGER, PARAMETER :: maxnumber = 12
  INTEGER :: totalsum, add, number

  CALL OMP_SET_NUM_THREADS (numthreads)
  totalsum = 0
  add = 1

  !$OMP PARALLEL DO  &
  !$OMP SCHEDULE(DYNAMIC,1) &
  !$OMP DEFAULT(SHARED)     &
  !$OMP PRIVATE(number1,    &
                number2)    &
  !$OMP REDUCTION(+:totalsum)
  DO nunmber = 1, maxnumber
    totalsum = add + totalsum + number
  END DO
  !$OMP END PARALLEL DO
  WRITE (*,*) totalsum

END PROGRAM test

I try to compile it with the command "gfortran -fopenmp test.f90". The compiler
returns with the following error message:

test.f90:16.24:

  !$OMP PRIVATE(number1,  &
                        1 
Error: Syntax error in OpenMP variable list at (1)
test.f90:17.16:

                number2)  &
                1
Error: Unclassifiable statement at (1)
test.f90:18.8:

  !$OMP REDUCTION(+:totalsum)
        1
Error: Unclassifiable OpenMP directive at (1)
test.f90:24.23:

  !$OMP END PARALLEL DO
                       1
Error: Unexpectged !$OMP END PARALLEL DO statement at (1)

It is clear that the erros are caused by the !$OMP PRIVATE line. It seems that
a list of variables cannot be broken in two lines. Had I had 
  !$OMP PRIVATE(number1,number2) &
instead of the two lines connected with the & sign, I would have not had any
compilation errors. I wanted to try breaking the line, though, because in my
codes I have very long lists of private variables. In the previous compiler I
used, namely Intel's ifort, I had no issues. Do you have any suggestions when
it comes to long lists of private variables? Should I simply have several
 !$OMP PRIVATE ([var1],[var2],...,[varn])
lines each opening and closing the bracket?

Thank you very much



More information about the Gcc-bugs mailing list