[mvapich-discuss] Trouble building MVAPICH2-1.5 shared libraries with Pathscale compiler

Adam T. Moody moody20 at llnl.gov
Wed Nov 24 18:11:43 EST 2010


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: pathscale_configure_test.patch
Type: text/x-patch
Size: 925 bytes
Desc: not available
Url : http://mail.cse.ohio-state.edu/pipermail/mvapich-discuss/attachments/20101124/d2537547/pathscale_configure_test-0001.bin


More information about the mvapich-discuss mailing list