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. 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?
A common misunderstanding with this subroutine is that offset must be an INTEGER(KIND=MPI_OFFSET_KIND). OMPI 1.6's F90 interface (and earlier versions) won't work with derived datatypes as the buffer, either. OMPI 1.7 has a wholly-reimplemented "mpi" module that allows derived datatypes as the buffer when used with non-gfortran compilers (e.g., fort). It also has the the "mpi_f08" MPI-3 module, which offers many nice things beyond the "mpi" module.
Here's pseudocode for the prototype of the MPI_FILE_READ_AT subroutine:
subroutine MPI_FILE_READ_AT(fh, offset, buf, count, datatype, &
integer, intent(in) :: fh
integer(kind=MPI_OFFSET_KIND), intent(in) :: offset
<type>, intent(out) :: buf
integer, intent(in) :: count
integer, intent(in) :: datatype
integer, dimension(MPI_STATUS_SIZE), intent(out) :: status
integer, intent(out) :: ierr
end subroutine MPI_FILE_READ_AT
If your offset parameter is a regular INTEGER, then the compiler fails with a non-helpful error. Meaning: the error message is *correct*, but not exceedingly helpful. :-) It's basically trying to tell you "I couldn't find a version of MPI_FILE_READ_AT that matches the parameters you passed."
On Aug 6, 2012, at 4:09 PM, Paul Romano wrote:
> When I try to use parallel I/O routines like MPI_File_write_at or MPI_File_read_at with the buffer argument being a derived datatype, I am unable to compile and just get an error of the nature:
> MPI_FILE_READ_AT(fh, offset, buffer, count, datatype, status, ierr)
> Error: There is no specific subroutine for the generic 'mpi_file_read_at' at (1)
> I'm using Open MPI 1.6 compiled with --with-mpi-f90-size=medium. I've also tried both gfortran and ifort, and both give the same compilation error. Has anyone else seen this behavior?
> Best regards,
> users mailing list
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
users mailing list