Tech Support > Computers & Technology > Programming > Passing function arguments in fortran with OpenMP
Passing function arguments in fortran with OpenMP
Posted by pkarthi@gmail.com on January 31st, 2006


The OpenMP parallelisation is done for a DO loop inside which various
subroutine calls are made. If for eg. I pass around 50 variables as
arguments for this routine, some of the arguments are not passed to the
called routine. Generally, as I notice, only 2 contiguous variables are
not getting passed (12th and 13th (or) 15th and 16th). Other variables
gets passed properly.

C$OMP PARALLEL
C$OMP& PRIVATE( A, B, C)
C$OMP& SHARED(X, Y, Z)
C$OMP DO
DO I = 1,100

CALL FUNCTION1( A, X, B, Z, Y)

CALL FUNCTION2( Z, Y)

CALL FUNCTION3( A, Z, Y)

END DO
C$OMP END DO
C$OMP END PARALLEL

For eg. as in the above case of call to function1( ), variables X and B
are not passed for example. With the same 'exe', some times B and Z are
not passed ". The variables that are not passed is generally private
which may be a scalar/ vector.
I mean "not passed" as : The debugger stops at this point where it
encounters this variable for the first time in the computatioin.

For example, inside function1

IF ( X(1) .EQ. 0 )

the computation stops when X is used for the first time. There is no
memory address shown for X in the debugger's memory dialogue box.

The compiler and debugger : pgf90 and pgdbg
in Linux platform with AMD opteron processors.
Note: The code runs in 2 processors.