[mvapich-discuss] Trouble building MVAPICH2-1.5 shared libraries
with Pathscale compiler
Adam T. Moody
moody20 at llnl.gov
Wed Nov 24 19:12:26 EST 2010
Hi Jonathan,
I'm using mvapich2-1.5.1p1, the zipped tarball from:
http://mvapich.cse.ohio-state.edu/download/mvapich2/mvapich2-1.5.1p1.tgz
It looks like the failure symptom is the same described in the very
first email below. Basically, without the patch, at some point the
build attempts to compile a file using "false" as the compiler name. I
have a makefile which wraps the configure and make used to build
mvapich. In there, I set the following values:
REG_CACHE := --disable-registration-cache
PTMALLOC := no
CC := pathcc
CXX := pathCC
F77 := pathf90
F90 := pathf90
CNAME := pathscale
MPICH2LIB_CFLAGS := -g -O2
MPICH2LIB_CXXFLAGS := -g -O2
MPICH2LIB_FFLAGS := -g -O2 -fno-second-underscore
MPICH2LIB_F90FLAGS := -g -O2 -fno-second-underscore
CONFIG_FLAGS := --enable-fast=O2 --enable-g=dbg
--enable-error-checking=runtime --enable-error-messages=all
--enable-nmpi-as-mpi
DEVICE_FLAGS := --with-device=ch3:psm
Then my makefile invokes the configure command, which looks like the
following:
./configure \
--prefix=$(PREFIXDIR) \
--enable-sharedlibs=gcc \
--enable-f77 --enable-f90 --enable-cxx \
$(CONFIG_FLAGS) \
--enable-debuginfo \
--with-pmi=slurm --with-pm=no \
$(DEVICE_FLAGS) \
$(REG_CACHE) \
--enable-romio --with-file-system=lustre+nfs+ufs \
--disable-mpe --without-mpe
Followed by
make VERBOSE=1
Without the patch, the build fails with the following error:
make[5]: Entering directory
`/tmp/dpkg-mkdeb.cbBxc16362/src/build-mvapich-long-path-hack-enabled-psm-pathscale-debug/src/binding/f90'
false -g -O0 -fno-second-underscore -g -O0 -I. -c mpi.f90 -o _smpi.o
mv -f _smpi.o mpi.lo
make[5]: *** [mpi.lo] Error 1
-Adam
Jonathan Perkins wrote:
>Hello Adam, did you try mvapich2-1.5.1p1 or did you try an earlier
>version? If this is not working for you we will need to see what is
>going wrong so that 1.6 won't suffer from this as well. Happy
>Thanksgiving to you as well.
>
>On Wed, Nov 24, 2010 at 6:11 PM, Adam T. Moody <moody20 at llnl.gov> wrote:
>
>
>>Hello all,
>>I finally got around to trying out mvapich2-1.5.1 today. I see in the
>>changelog that this version has a bullet noting that "- Shared libraries can
>>be generated with unknown compilers", so I was hopeful this might address
>>the Pathscale issue noted in the email chain below. However, I found that I
>>still needed to apply the attached patch to get shared libraries to build
>>with the Pathscale compiler. Any hope of integrating this patch (or
>>something better) into mvapich2-1.6?
>>
>>Happy Thanksgiving!
>>-Adam
>>
>>
>>Adam T. Moody wrote:
>>
>>
>>
>>>Hi Pavan,
>>>Sounds good. In my patch, I just copied the existing pattern in the
>>>config file and applied it to cover the PathScale case.
>>>
>>>Looking at the diff on the link you sent, it looks like FC_SHL is set by
>>>testing various options, but it's not clear to me that F90_SHL is set in a
>>>similar way. In fact, it still looks like there is a case statement based
>>>on the compiler vendor (gnu vs absoft vs intel vs pgi). So long as some
>>>mechanism lets PathScale builds work, I'm happy.
>>>-Adam
>>>
>>>Pavan Balaji wrote:
>>>
>>>
>>>
>>>
>>>>Adam,
>>>>
>>>>It's probably not a good idea to check specifically for the pathscale
>>>>compiler. Instead, doing a feature test on the compiler on what it accepts
>>>>and what it doesn't might be better.
>>>>
>>>>We had encountered this bug recently, and it was fixed in r6604 in
>>>>MPICH2: https://**trac.mcs.anl.gov/projects/mpich2/changeset/6604
>>>>
>>>>This patch should directly apply for MVAPICH2 as well.
>>>>
>>>>-- Pavan
>>>>
>>>>On 07/22/2010 07:21 PM, Adam T. Moody wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>Hello MVAPICH team,
>>>>>I've attached a patch to get MVAPICH2-1.5 to build shared libraries
>>>>>using the Pathscale 3.2.99 compiler. I patched 'configure', so you'll
>>>>>probably have to port this to 'configure.in' or something else. Also, I'd
>>>>>recommend changing the configure warning for an "unknown" F90 shared library
>>>>>compile command to a fatal error for users who want to build shared
>>>>>libraries. I haven't tested a run, but at least the MPI builds, and I can
>>>>>apparently link to the resulting shared library via a simple MPI F90
>>>>>program. Here is the background:
>>>>>
>>>>>I'm trying to get a build of MVAPICH2-1.5 with shared libraries using
>>>>>the Pathscale 3.2.99 compiler, but I get the following error during the
>>>>>build.
>>>>>
>>>>>make[5]: Entering directory
>>>>>`/tmp/dpkg-mkdeb.QmhTI32413/src/build-mvapich-long-path-hack-enabled-ofa-pathscale-debug/src/binding/f90'
>>>>>CC create_f90_int.c
>>>>>CC create_f90_real.c
>>>>>CC create_f90_complex.c
>>>>>CC typef90cmplxf.c
>>>>>CC typef90realf.c
>>>>>CC typef90intf.c
>>>>>CC create_f90_util.c
>>>>>AR cr ../../../lib/libmpich.la create_f90_int.lo create_f90_real.lo
>>>>>create_f90_complex.lo typef90cmplxf.lo typef90realf.lo typef90intf.lo
>>>>>create_f90_util.lo
>>>>>date > .libstamp1
>>>>>make[5]: Leaving directory
>>>>>`/tmp/dpkg-mkdeb.QmhTI32413/src/build-mvapich-long-path-hack-enabled-ofa-pathscale-debug/src/binding/f90'
>>>>>make[5]: Entering directory
>>>>>`/tmp/dpkg-mkdeb.QmhTI32413/src/build-mvapich-long-path-hack-enabled-ofa-pathscale-debug/src/binding/f90'
>>>>>F90 mpi.f90
>>>>>make[5]: *** [mpi.lo] Error 1
>>>>>
>>>>>When I cd into the build directory and run "make VERBOSE=1", I see the
>>>>>following:
>>>>>
>>>>>zeus286<73>: make VERBOSE=1
>>>>>make[1]: Entering directory
>>>>>`/tmp/dpkg-mkdeb.QmhTI32413/src/build-mvapich-long-path-hack-enabled-ofa-pathscale-debug/src/binding/f90'
>>>>>make[1]: `.libstamp1' is up to date.
>>>>>make[1]: Leaving directory
>>>>>`/tmp/dpkg-mkdeb.QmhTI32413/src/build-mvapich-long-path-hack-enabled-ofa-pathscale-debug/src/binding/f90'
>>>>>make[1]: Entering directory
>>>>>`/tmp/dpkg-mkdeb.QmhTI32413/src/build-mvapich-long-path-hack-enabled-ofa-pathscale-debug/src/binding/f90'
>>>>>false -g -O0 -fno-second-underscore -g -O0 -I. -c mpi.f90 -o _smpi.o
>>>>>mv -f _smpi.o mpi.lo
>>>>>make[1]: *** [mpi.lo] Error 1
>>>>>make[1]: Leaving directory
>>>>>`/tmp/dpkg-mkdeb.QmhTI32413/src/build-mvapich-long-path-hack-enabled-ofa-pathscale-debug/src/binding/f90'
>>>>>make: *** [all-redirect] Error 1
>>>>>
>>>>>Apparently, it's trying to use "false" as the name of the Fortran
>>>>>compiler. Looking at the Makefile in this directory, I see the F90_SHL
>>>>>macro is set to "false" instead of something like "pathf90 -shared -fpic",
>>>>>which is what I suspect it should be. (In fact, if I hard code this in,
>>>>>then the make works.)
>>>>>
>>>>>CC = pathcc
>>>>>CFLAGS = -g -O0 -g -O0 $(MPICH2_MAKE_CFLAGS)
>>>>>C_COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CFLAGS) $(CPPFLAGS)
>>>>>LIBTOOL =
>>>>>CC_SHL = ${CC} -fpic
>>>>>C_COMPILE_SHL = $(CC_SHL) $(DEFS) $(INCLUDES) $(CFLAGS) $(CPPFLAGS)
>>>>>F90 = pathf90
>>>>>F90FLAGS = -g -O0 -fno-second-underscore -g -O0
>>>>>F90_COMPILE = $(F90) $(F90FLAGS) $(F90INCLUDES)
>>>>>F90_SHL = false
>>>>>F90_COMPILE_SHL = $(F90_SHL) $(F90FLAGS) $(F90INCLUDES)
>>>>>
>>>>>Looking at the main configure file around line 13287, I see tests for
>>>>>various compilers, but none specifically for Pathscale. These tests
>>>>>apparently look for strings in the verion output of the F90 compiler. For
>>>>>reference, here is what I get with "pathf90 --version":
>>>>>
>>>>>zeus286<94>: pathf90 --version
>>>>>PathScale(TM) Compiler Suite: Version 3.2.99
>>>>>Built on: 2009-08-21 13:23:57 -0500
>>>>>Thread model: posix
>>>>>GNU gcc version 4.2.0 (PathScale 3.2.99 driver)
>>>>>
>>>>>Copyright 2000, 2001 Silicon Graphics, Inc. All Rights Reserved.
>>>>>Copyright 2002, 2003, 2004, 2005, 2006 PathScale, Inc. All Rights
>>>>>Reserved.
>>>>>Copyright 2006, 2007 QLogic Corporation. All Rights Reserved.
>>>>>Copyright 2007, 2008 PathScale LLC. All Rights Reserved.
>>>>>See complete copyright, patent and legal notices in the
>>>>>
>>>>>/usr/local/tools/pathscale-3.2.99/share/doc/pathscale-compilers-3.2.99/LEGAL.pdf
>>>>>file.
>>>>>
>>>>>In order to support the Pathscale compiler for shared libraries, I
>>>>>suppose a test should be added to look for "PathScale" and then set "F90_SHL
>>>>>= $(F90) -fpic". This is what the included patch does. In addition, it may
>>>>>be good to assume "F90_SHL = $(F90) -fpic" if the compiler is unknown or
>>>>>otherwise throw a fatal error during the configure. I'd be happy to help
>>>>>test out a fix.
>>>>>Thanks,
>>>>>-Adam
>>>>>
>>>>>
>>>>>
>>>>>------------------------------------------------------------------------
>>>>>
>>>>>_______________________________________________
>>>>>mvapich-discuss mailing list
>>>>>mvapich-discuss at cse.ohio-state.edu
>>>>>http://**mail.cse.ohio-state.edu/mailman/listinfo/mvapich-discuss
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>_______________________________________________
>>>mvapich-discuss mailing list
>>>mvapich-discuss at cse.ohio-state.edu
>>>http://*mail.cse.ohio-state.edu/mailman/listinfo/mvapich-discuss
>>>
>>>
>>>
>>>
>>_______________________________________________
>>mvapich-discuss mailing list
>>mvapich-discuss at cse.ohio-state.edu
>>http://mail.cse.ohio-state.edu/mailman/listinfo/mvapich-discuss
>>
>>
>>
>>
>
>
>
>
>
More information about the mvapich-discuss
mailing list