Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: Re: [OMPI users] Undefined symbols with MPI_Get_address
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2013-08-06 11:56:16


On Aug 6, 2013, at 8:40 AM, Hugo Gagnon <opensource.openmpi_at_[hidden]> wrote:

> Does this mean that for now I can just replace the MPI_Get_address calls
> to MPI_Address?
>
> I tried it and I got:
>
> $openmpif90 test.f90
> test.f90:11.32:
>
> call MPI_Address(a,address,ierr)
> 1
> Error: There is no specific subroutine for the generic 'mpi_address' at
> (1)

No. Because in the old/deprecated MPI_Address call, the "address" parameter type is "INTEGER", not "INTEGER(KIND=MPI_ADDRESS_KIND)", which typically is not sufficient on 64 bit machines. :-( (which is why the MPI Forum introduced the MPI_Get_address function, which uses ADDRESS_KIND, and will be big enough for 64 bit values, etc.)

You should be able to apply the attached patch to an OMPI 1.7.x tarball to add the MPI_Get_address implementation (which is a little difficult for you because you're installing via macports, but...).

> On a unrelated note, I noticed that I always get this generic message
> for MPI-related compiling errors; is there a way to get more descriptive
> error messages?

Unfortunately not; this is a compiler message -- it's not from Open MPI.

It typically means that either a) you have either the wrong subroutine name or b) you have the wrong type for one of the parameters. Specifically, it means that the compiler was unable to match your source code with any of the interfaces specified in the module file. In the case above, your code was calling MPI_Address with "address" of type INTEGER(KIND=MPI_ADDRESS_KIND), but the module only has interfaces with MPI_Address with "address" of type INTEGER. So no match was able to be found.

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