Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] openmpi-1.8.2rc2 and f08 interface built with PGI-14.7 causes link error
From: Paul Hargrove (phhargrove_at_[hidden])
Date: 2014-07-30 21:16:47


Jeff,

I can now reproduce Tetsuya's original problem, using a build of 1.8.2rc2
with PGI 14.4.

$ INST/bin/mpifort ../test.f
/scratch/scratchdirs/hargrove/pgf90pdegT3bhBmEq.o: In function `.C1_283':
test.f:(.data+0x6c): undefined reference to `mpi_f08_interfaces_callbacks_'
test.f:(.data+0x74): undefined reference to `mpi_f08_interfaces_'
test.f:(.data+0x7c): undefined reference to `pmpi_f08_interfaces_'
test.f:(.data+0x84): undefined reference to `mpi_f08_sizeof_'
/usr/bin/ld: link errors found, deleting executable `a.out'

And here is the showme:

$ INST/bin/mpifort ../test.f --showme
pgf90 ../test.f
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-1.8.2rc2-linux-x86_64-pgi-14.4/INST/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-1.8.2rc2-linux-x86_64-pgi-14.4/INST/lib
-Wl,-rpath
-Wl,/scratch/scratchdirs/hargrove/OMPI/openmpi-1.8.2rc2-linux-x86_64-pgi-14.4/INST/lib
-L/scratch/scratchdirs/hargrove/OMPI/openmpi-1.8.2rc2-linux-x86_64-pgi-14.4/INST/lib
-lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi

It may be relevant to note that the 4 undefined references each name a
module.
There does not appear to be any definition of these in any library:

$ for x in INST/lib/*.{a,so}; do nm $x; done | grep -i mpi_f08_sizeof
                 U mpi_f08_sizeof_

That undefined reference is in libmpi_usepmif90.so along with the other
three in the linker error.

I am essentially illiterate with respect to any feature added to fortran
after F77.
So, I am happy to run tests but have no suggestions as to a resolution.

-Paul

On Wed, Jul 30, 2014 at 5:24 PM, Jeff Squyres (jsquyres) <jsquyres_at_[hidden]
> wrote:

> On Jul 28, 2014, at 11:43 PM, tmishima_at_[hidden] wrote:
>
> > [mishima_at_manage work]$ mpif90 test.f -o test.ex
> > /tmp/pgfortran65ZcUeoncoqT.o: In function `.C1_283':
> > test.f:(.data+0x6c): undefined reference to
> `mpi_f08_interfaces_callbacks_'
> > test.f:(.data+0x74): undefined reference to `mpi_f08_interfaces_'
> > test.f:(.data+0x7c): undefined reference to `pmpi_f08_interfaces_'
> > test.f:(.data+0x84): undefined reference to `mpi_f08_sizeof_'
>
> Just to go back to the original post here: can you send the results of
>
> mpifort test.f -o test.ex --showme
>
> I'd like to see what fortran libraries are being linked in. Here's what I
> get when I compile OMPI with the Intel suite:
>
> -----
> $ mpifort hello_usempif08.f90 -o hello --showme
> ifort hello_usempif08.f90 -o hello -I/home/jsquyres/bogus/include
> -I/home/jsquyres/bogus/lib -Wl,-rpath -Wl,/home/jsquyres/bogus/lib
> -Wl,--enable-new-dtags -L/home/jsquyres/bogus/lib -lmpi_usempif08
> -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi
> ----
>
> I note that with the Intel compiler, the Fortran module files are created
> in the lib directory (i.e., $prefix/lib), which is -L'ed on the link line.
> Does the PGI compiler require something different? Does the PGI 14
> compiler make an additional library for modules that we need to link in?
>
> We didn't use CONTAINS, and it supposedly works fine with the mpi module
> (right, guys?), so I'm not sure would the same scheme wouldn't work for the
> mpi_f08 module...?
>
> --
> Jeff Squyres
> jsquyres_at_[hidden]
> For corporate legal information go to:
> http://www.cisco.com/web/about/doing_business/legal/cri/
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2014/07/15377.php
>

-- 
Paul H. Hargrove                          PHHargrove_at_[hidden]
Future Technologies Group
Computer and Data Sciences Department     Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900