On Aug 7, 2012, at 3:13 PM, Paul Romano wrote:

> Thanks for your response Jeff. My offset is of kind MPI_OFFSET_KIND which 
> leads me to believe it is the derived type that is causing the compilation 
> error. I'm also able to successfully compile and run the same code using 
> MPICH2.

That's because MPICH2 doesn't include an F90 interface for MPI_FILE_READ_AT, so 
it falls back to the F77-style matching (meaning: no parameter checking at all 
:-( ).

Alternatively, you could compile OMPI with f90-size set to "small", and then 
MPI_FILE_READ_AT won't be prototyped, and you should be ok.

> Out of curiousity, how is it that some of the more standard MPI routines in 
> the F90 interface such as MPI_SEND are able to accept derived types for 
> buffers whereas parallel I/O routines are not?

They aren't.  You should run into the same issues with MPI_SEND as you do with 
MPI_FILE_READ AT...

FWIW, you might want to try OMPI's trunk tarball from last night with 
icc/icpc/ifort, and try the new "mpi" module.  *All* MPI subroutines are 
prototyped in the "mpi" module (including those with choice buffers -- we did 
some magic to make that work).  There's no more trivial/small/medium/large size 
"mpi" module.

    http://www.open-mpi.org/nightly/

Note that gfortran doesn't yet support the magic we need (although they're 
working on it), so if you use gfortran, you get essentially the same "mpi" 
module that is in OMPI 1.6.

If you're feeling adventurous, use the new mpi_f08 module.  The Big Difference 
is that MPI handles have unique types (not INTEGER).  For example:

    use mpi_f08
    type(MPI_Comm) :: comm
    comm = MPI_COMM_WORLD

But you can interchange the new handle types with legacy MPI code by accessing 
the MPI_VAL member; it's the same old INTEGER handle that you're used to.

    use mpi_f08
    type(MPI_Comm) :: comm
    integer :: old_style_comm_handle
    comm = MPI_COMM_WORLD
    old_style_comm_handle = comm%MPI_VAL
    comm%MPI_VAL = old_style_comm_handle

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to