Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] v1.7 and trunk: hello_oshmemfh link failure with xlc/ppc32/linux
From: Paul Hargrove (phhargrove_at_[hidden])
Date: 2014-02-08 20:22:29


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