Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] MPI_TYPE_CREATE_SUBARRAY not in mpif90 library
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2011-02-16 10:40:00


What version of Open MPI are you using?

I just checked a trivial f90 MPI program and MPI_TYPE_CREATE_SUBARRAY seemed to work ok.

I am not a fortran expert, but when I have seen this type of error message before, it *usually* meant that there was a type mismatch between the types passed to the function and the function signature available in the f90 module. I.e., the compiler found a function matching the *name*, but wasn't able to find a match for the *type signature*.

Here's Open MPI's declaration of MPI_TYPE_CREATE_SUBARRAY:

-----
interface MPI_Type_create_subarray
subroutine MPI_Type_create_subarray(ndims, size_array, subsize_array, start_array, order, &
        oldtype, newtype, ierr)
  integer, intent(in) :: ndims
  integer, dimension(*), intent(in) :: size_array
  integer, dimension(*), intent(in) :: subsize_array
  integer, dimension(*), intent(in) :: start_array
  integer, intent(in) :: order
  integer, intent(in) :: oldtype
  integer, intent(out) :: newtype
  integer, intent(out) :: ierr
end subroutine MPI_Type_create_subarray
end interface
-----

One thing you might want to double check is that OMPI was compiled with MPI_REAL8 support (since MPI_REAL8 was passed to the subroutine). Run this:

-----
shell$ ompi_info --all | grep real8
         Fort have real8: yes
         Fort real8 size: 8
        Fort real8 align: 8
shell$
-----

Finally, note that Open MPI doesn't have many of the F90 symbols that you might expect in libmpi_f90.so because most of our F90 support is "direct pass through" to the F77 subroutines. Specifically, our F90 mpi module simply provides compile-time checking for expected signatures, but the subroutine call is actually automatically linked against the corresponding symbol in libmpi_f77.so. Only a few subroutines -- i.e., the ones that have multiple different type signatures -- actually appear in libmpi_f90.so.

Meaning: MPI_TYPE_CREATE_SUBARRAY only has one type signature. So it's normal / expected that you don't see /mpi_type_subarray/i in libmpi_f90.so.

On Feb 15, 2011, at 1:18 PM, Petit, George (Cont, ARL/CISD) wrote:

> A user posted the following ticket to our site. Should the referenced MPI routine be included in the mpif90 library? If not, why? And is there a way to get it added.
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> I receive the following error when I try to compile my code with ifort with the
> openmpi library:
>
> grid.f(38): error #6285: There is no matching specific subroutine for this generic
> subroutine call. [MPI_TYPE_CREATE_SUBARRAY]
> call
> mpi_type_create_subarray(3,isizes,isubs,istarts,MPI_ORDER_FORTRAN,MPI_REAL8,DTghost(1),ierr)
> -------------^
>
> It looks like the 'mpi_type_create_subarray' routine is missing from the openmpi
> library libmpi_f90.so. The routine is in libmpi_f77.so. Is it possible to add it
> to the f90 library? The fortran 90 versions of mpi for sgi_mpt, xt-mpt, ibm-mpi and
> intelmpi all include this routine. Thanks. -Rob
>
> George Petit
> Lockheed Martin
> ARL DSRC Customer Support Team Lead
> george.petit_at_[hidden]
> 410-278-9283
>
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/