Does PGF77 support array reduction?


I was trying to parallel the following code in the following way:

            DO 90, J = 1, N
C$OMP Parallel Do Schedule(dynamic,1) Default(shared)
C$OMP+   Private(L,I,TEMP) Reduction(+:C)
               DO 80, L = 1, K
                  IF( B( L, J ).NE.ZERO )THEN
                     TEMP = ALPHA*B( L, J )
                     DO 70, I = 1, M
                        C( I, J ) = C( I, J ) + TEMP*A(I,L)
   70                CONTINUE
                  END IF
   80          CONTINUE
C$OMP End Parallel Do
   90       CONTINUE

And I tried to compile this by using:

pgf77 -i8 -mp  -O2 -tp p7-64 -time -fast -o xgemm.exe xgemm.F -lacml -lpthread -lm -lc

the version of pgf77 is PGI/7.1.6, I have got the following error message:

PGFTN-S-0155-Reduction variable must be a scalar variable - c (xgemm.f: 346)

Does this mean this version of compiler doesn’t support array reduction? If not, which version of pgf77 I can use to compile this code? Or if any of the pgf77 compiler doesn’t support this array reduction, how can I parallel this part (I have to use pgf77 only)? Thank you very much.


Hi Sharp,

I believe the restriction for a reduction expression being a scaler was relaxed with OpenMP 2.5 so this example should work (and does with the PGI F90 compiler pgf90). I have opened technical problem report TPR#15421 and have requested this restriction be relaxed for pgf77 as well.

Thank you for the report!