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
[email protected]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/