OpenMPI version: 1.3.3 & 1.4.3
Platform: IBM P5
Issue: I want OpenMPI to support some existing 64-bit
FORTRAN software, but I can’t seem to get 64-bit objects from OpenMPI
without some modification to the Makefile in ompi/mpi/f90.
I can configure, build, and install just fine with the
following compilers:
-
CC = xlC_r
-
CXX = xlC_r
-
F77 = xlf95_r
-
FC = xlf95_r
But, this configuration produces 32-bit objects for all
languages.
So, to produce 64-bit objects for all languages, I supply
the following flags:
-
CFLAGS = -q64
-
CXXFLAGS = -q64
-
FFLAGS = -q64
-
FCFLAGS = -q64
This configuration results in the following error during the
build (more specifically, link) phase:
-
When creating libmpi_f90.la in ompi/mpi/f90
-
COMMANDS:
o
/bin/sh ../../../libtool --mode=link
xlf95_r -I../../../ompi/include -I../../../ompi/include -I. -I.
-I../../../ompi/mpi/f90 -q64 -version-info 0:1:0
-export-dynamic -o libmpi_f90.la -rpath <prefix>/lib mpi.lo
mpi_sizeof.lo mpi_comm_spawn_multiple_f90.lo mpi_testall_f90.lo mpi_testsome_f90.lo
mpi_waitall_f90.lo mpi_waitsome_f90.lo mpi_wtick_f90.lo mpi_wtime_f90.lo
../../../ompi/libmpi.la -lnsl -lutil
o
libtool: link: /usr/bin/ld -m elf64ppc
-shared .libs/mpi.o .libs/mpi_sizeof.o
.libs/mpi_comm_spawn_multiple_f90.o .libs/mpi_testall_f90.o .libs/mpi_testsome_f90.o
.libs/mpi_waitall_f90.o .libs/mpi_waitsome_f90.o .libs/mpi_wtick_f90.o
.libs/mpi_wtime_f90.lo -L<topdir>/orte/.libs
-L<topdir>/opal/.libs ../../../ompi/.libs/libmpi.so
<topdir>/orte/.libs/libopen-rte.so <topdir>/opal/.libs/libopen-pal.so
-ldl -lnsl -lutil -q64 -soname libmpi_f90.so.0 -o
.libs/libmpi_f90.so.0.0.1
-
OUTPUT:
/usr/bin/ld: unrecognized option
‘-q64’
/usr/bin/ld: use the --help option
for usage information
make[4]: *** [libmpi_f90.la] Error
1
make[4]: Leaving directory
`<topdir>/ompi/mpi/f90`
make[3]: *** [all-recursive] Error
1
make[3]: Leaving directory
`<topdir>/ompi/mpi/f90`
make[2]: *** [all] Error 2
make[2]: Leaving directory
`<topdir>/ompi/mpi/f90`
make[1]: *** [all-recursive] Error
1
make[1]: Leaving directory
`<topdir>/ompi`
make: *** [all-recursive] Error 1
The -q64 option, while valid for the xlf95_r compiler, is
not a valid option for /usr/bin/ld. So, I’m wondering why this
option got passed to /usr/bin/ld. After looking at
<topdir>/ompi/mpi/f90/Makefile, I see that FCFLAGS shows up in link lines
(“libmpi_f90_la_LINK” and “FCLINK”). This
direction seems to come from Makefile.in.
If I remove these FCFLAGS references from the Makefile, I am
able to complete the build and install of OpenMPI, and it seems to correctly
support my existing software.
So, now for my question:
Should FCFLAGS show up on these links lines and, if so, how
would I get 64-bit objects?
Thanks,
Brian Price