Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] v1.7 and trunk: hello_oshmemfh link failure with xlc/ppc32/linux
From: Paul Hargrove (phhargrove_at_[hidden])
Date: 2014-02-09 02:30:07


The same problem exists on a ppc64 target with a newer xlc (12.1 vs 11.1)
but the same xlf (14.1).

-Paul

On Sat, Feb 8, 2014 at 5:22 PM, Paul Hargrove <phhargrove_at_[hidden]> wrote:

> Testing the current v1.7 tarball (1.7.5a1r30634), I get a failure when
> building the oshmem examples.
> I've confirmed that the same problem exists on trunk (so not a problem
> with the CMR).
>
> [...]
> mpifort -g ring_usempi.f90 -o ring_usempi
> ** ring === End of Compilation 1 ===
> 1501-510 Compilation successful for file ring_usempi.f90.
> make[2]: Leaving directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> make[1]: Leaving directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> make[1]: Entering directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> make[2]: Entering directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> shmemcc -g hello_oshmem_c.c -o hello_oshmem
> make[2]: Leaving directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> make[2]: Entering directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> shmemcc -g ring_oshmem_c.c -o ring_oshmem
> make[2]: Leaving directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> make[2]: Entering directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> shmemfort -g hello_oshmemfh.f90 -o hello_oshmemfh
> ** hello_oshmem === End of Compilation 1 ===
> 1501-510 Compilation successful for file hello_oshmemfh.f90.
> make[2]: Leaving directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> make[2]: Entering directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> shmemfort -g ring_oshmemfh.f90 -o ring_oshmemfh
> ** ring_oshmem === End of Compilation 1 ===
> 1501-510 Compilation successful for file ring_oshmemfh.f90.
> ring_oshmemfh.o: In function `ring_oshmem':
> /gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples/ring_oshmemfh.f90:33:
> undefined reference to `shmem_put8'
> /gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples/ring_oshmemfh.f90:46:
> undefined reference to `shmem_int8_wait_until'
> /gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples/ring_oshmemfh.f90:55:
> undefined reference to `shmem_put8'
> make[2]: *** [ring_oshmemfh] Error 1
> make[2]: Leaving directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> make[1]: *** [oshmem] Error 2
> make[1]: Leaving directory
> `/gpfs-biou/phh1/OMPI/openmpi-1.7-latest-linux-ppc32-xlc-11.1/BLD/examples'
> make: *** [all] Error 2
>
> The link of ring_oshmemfh is failing with undefined references to
> shmem_put8 and shmem_int8_wait_until.
> The relevant portion of "make" output in the example dir is shown above.
> Note that ring_usempi linked fine, indicating that F90 MPI bindings are
> fine.
> Additionally, ring_oshmem linked file, indicating that C language OSHMEM
> bindings are fine, too.
>
> In case it is relevant: this build is configured with
> --enable-static --enable-shared --enable-mpi-fortran=usempi --disable-vt
>
> The "--enable-static --enable-shared" flags are just to make for a more
> thorough test.
> However, retesting without --enable-static did not resolve the problem.
>
> The --enable-mpi-fortran flag is necessary because the F08 bindings don't
> build with this compiler (
> http://www.open-mpi.org/community/lists/devel/2014/01/13802.php).
>
> The --disable-vt flag is necessary because the compiler crashes building
> VT.
>
> Some misc bits of info:
>
> $ shmemfort -g ring_oshmemfh.f90 -o ring_oshmemfh --show
> xlf -g ring_oshmemfh.f90 -o ring_oshmemfh
> -I/home/phh1/SCRATCH/OMPI/openmpi-trunk-linux-ppc32-xlc-11.1/INST/include
> -I/home/phh1/SCRATCH/OMPI/openmpi-trunk-linux-ppc32-xlc-11.1/INST/lib
> -Wl,-rpath
> -Wl,/home/phh1/SCRATCH/OMPI/openmpi-trunk-linux-ppc32-xlc-11.1/INST/lib
> -Wl,--enable-new-dtags
> -L/home/phh1/SCRATCH/OMPI/openmpi-trunk-linux-ppc32-xlc-11.1/INST/lib
> -loshmem -lmpi_mpifh -lmpi -lm -lnuma -ldl -lrt -lnsl -lutil -lpthread
>
> $ nm INST/lib/liboshmem.so | grep shmem_put8
> 0009eab0 t 00000000.plt_pic32.shmem_put8_f
> 00063f20 T shmem_put8_
> 00063fa0 T shmem_put8__
> 00063e00 T shmem_put8_f
> $ nm INST/lib/liboshmem.a | grep shmem_put8
> shmem_put8_f.o:
> 00000120 T shmem_put8_
> 000001a0 T shmem_put8__
> 00000000 T shmem_put8_f
>
> -Paul
>
> --
> 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
>

-- 
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