Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] 1.5rc5 has been posted
From: Larry Baker (baker_at_[hidden])
Date: 2010-09-01 14:40:49


I managed to compile OpenMPI 1.5rc5 on Linux x86_64 using the PGI 10.3
compilers. All validation tests passed. I have attached the
procedure I followed and the patches I applied to 1.5rc5. I did not
spend the time to find out how to fix configure to include -pthread in
the LIBS Makefile variable definition; I made a brute-force change to
all the Makefiles after configure ran. (FYI: make recreates all the
Makefiles -- I don't know why that is.) Also, my patch to otfprofile
will require fixes to configure/libtool to determine the proper
selection of the -mp option for pre-10.x PGI compilers.

Larry Baker
US Geological Survey
650-329-5608
baker_at_[hidden]

Development environment:

> [baker_at_hydra ~]$ cat /etc/redhat-release
> CentOS release 4.5 (Final)
>
> [baker_at_hydra ~]$ uname -a
> Linux hydra.wr.usgs.gov 2.6.9-55.0.2.ELsmp #1 SMP Tue Jun 26
> 14:14:47 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
>
> [baker_at_hydra ~]$ rpm -q -a | grep gcc
> gcc-3.4.6-8
> gcc4-4.1.1-53.EL4
> compat-libgcc-296-2.96-132.7.2
> libgcc-3.4.6-8
> globus_scheduler_event_generator_sge_gcc64_rtl-1.1-0
> gcc-c++-3.4.6-8
> libgcc-3.4.6-8
> globus_scheduler_event_generator_sge_gcc64_dev-1.1-0
> gcc-g77-3.4.6-8
> gcc4-gfortran-4.1.1-53.EL4

Login as root, then type:

> [root_at_hydra ~]# cd /usr/local/src
> [root_at_hydra src]# sh make-openmpi-1.5rc5-pgi.sh

make-openmpi-1.5rc5-pgi.sh:

> # Patch OpenMPI 1.5rc5
> cd /usr/local/src
> tar -xjf openmpi-1.5rc5.tar.bz2
> source patch-openmpi-1.5rc5.sh
>
> # Configure OpenMPI 1.5rc5 for PGI 10.3 compilers
> cd openmpi-1.5rc5
> export PGI_DIR=/opt/pgi/linux86-64/10.3
> export PATH=$PGI_DIR/bin:$PATH
> ./configure >configure.log 2>&1 \
> --prefix=$PGI_DIR/openmpi --with-sge \
> --with-wrapper-cflags="-DNO_PGI_OFFSET" \
> --with-wrapper-cxxflags="-DNO_PGI_OFFSET" \
> CC="pgcc -m64" \
> CFLAGS="-g -O3 -tp amd64 -DNO_PGI_OFFSET" \
> CXX="pgcpp -m64" \
> CXXFLAGS="-g -O3 -tp amd64 -DNO_PGI_OFFSET" \
> FC="pgf90 -m64" \
> FCFLAGS="-g -O3 -tp amd64" \
> F77="pgf90 -m64" \
> FFLAGS="-g -O3 -tp amd64"
>
> # Would like to do Makefile fixups here, but make recreates them
>
> # Do the make until the link fails
> make >make_part1.log 2>&1
>
> # Apply Makefile fixups to add -lpthread to the LIBS variable
> find . -name Makefile -exec cp {} {}.original ';' \
> -exec sh -c "sed -e '/^LIBS = -lnsl -lutil$/s/$/ -
> lpthread/' {}.original >{}" ';'
>
> # Finish the make
> make >make_part2.log 2>&1
>
> # Validate the library
> make check >check.log 2>&1

patch-openmpi-1.5rc5.sh:

> # Fixes to correctly identify PGI compiler versions 1 through 5
> mv openmpi-1.5rc5/config/libtool.m4{,.original}
> sed -e '5899s/\[\[1-5\]\]\*/\[\[1-5\]\].\*/g' \
> openmpi-1.5rc5/config/libtool.m4.original \
> >openmpi-1.5rc5/config/libtool.m4
> mv openmpi-1.5rc5/opal/libltdl/m4/libtool.m4{,.original}
> sed -e '5899s/\[\[1-5\]\]\*/\[\[1-5\]\].\*/g' \
> openmpi-1.5rc5/opal/libltdl/m4/libtool.m4.original \
> >openmpi-1.5rc5/opal/libltdl/m4/libtool.m4
>
> # Disable inline assembly for PGI C++, as is done for PGI C (26246),
> and
> # Fix PGI C compiler warning (11146, 19215): Pragma ignored - string
> # expected after #pragma ident
> mv openmpi-1.5rc5/configure{,.original}
> sed -e '26246{x;s/^.*$/ if test "$ompi_cv_cxx_compiler_vendor" =
> "portland group" ; then/;p;
> s/^.*$/ # PGI seems to have some issues with
> our inline assembly./;p;
> s/^.*$/ # Disable for now./;p;
> s/^.*$/ asm_result="no (Portland Group)"/;p;
> s/^.*$/ else/;G;}' \
> -e '26369{x;s/^.*$/ fi/;G;}' \
> -e '11146{s/#pragma ident/#define IDENT/;p;
> s/^.*$/#pragma ident \$IDENT/;}' \
> -e '19215{s/#pragma ident/#define IDENT/;p;
> s/^.*$/#pragma ident \$IDENT/;}' \
> openmpi-1.5rc5/configure.original \
> >openmpi-1.5rc5/configure
> chmod +x openmpi-1.5rc5/configure
>
> # Fix PGI compiler warning: Array name used in logical expression
> mv openmpi-1.5rc5/opal/libltdl/ltdl.h{,.original}
> sed -e '44s/((s) && (s)\[0\])/(s!=NULL)/' \
> openmpi-1.5rc5/opal/libltdl/ltdl.h.original \
> >openmpi-1.5rc5/opal/libltdl/ltdl.h
>
> # Fix PGI compiler warning: Redefinition of symbol assert (364-370)
> and
> # Pointer value created from a nonlong integral type (444, 459,
> 3446, 3664, 3789)
> mv openmpi-1.5rc5/opal/mca/memory/ptmalloc2/hooks.c{,.original}
> sed -e '444s/: 0;/: NULL;/' \
> -e '459s/: 0;/: NULL;/' \
> openmpi-1.5rc5/opal/mca/memory/ptmalloc2/hooks.c.original \
> >openmpi-1.5rc5/opal/mca/memory/ptmalloc2/hooks.c
> mv openmpi-1.5rc5/opal/mca/memory/ptmalloc2/malloc.c{,.original}
> sed -e '364,369d' \
> -e '370{s/^.*$/#if MALLOC_DEBUG \&\& defined( NDEBUG )/;p;
> s/^.*$/#error -DMALLOC_DEBUG is inconsistent with -
> DNDEBUG/;p;
> s/^.*$/#endif/;p;
> s/^.*$//;p;
> s/^.*$/#include <assert.h>/;}' \
> -e '3446s/: 0,/: NULL,/' \
> -e '3664s/: 0,/: NULL,/' \
> -e '3789s/: 0,/: NULL,/' \
> openmpi-1.5rc5/opal/mca/memory/ptmalloc2/malloc.c.original \
> >openmpi-1.5rc5/opal/mca/memory/ptmalloc2/malloc.c
>
> # Fix PGI compiler error: expected an identifier caused by misplaced
> #define that causes
> # syntax error later in <omp.h> (Note: -mp should be configured by
> configure/libtool)
> mv openmpi-1.5rc5/ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/
> otfprofile.cpp{,.original}
> sed -e '16,17d' \
> -e '19,22d' \
> -e '26,28d' \
> openmpi-1.5rc5/ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/
> otfprofile.cpp.original \
> >openmpi-1.5rc5/ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/
> otfprofile.cpp

On Aug 17, 2010, at 2:18 PM, Jeff Squyres wrote:

> We still have one known possible regression:
>
> https://svn.open-mpi.org/trac/ompi/ticket/2530
>
> But we posted rc5 anyway (there's a bunch of stuff that has been
> pending for a while that is now in). Please test!
>
> http://www.open-mpi.org/software/ompi/v1.5/
>
> --
> Jeff Squyres
> jsquyres_at_[hidden]
> For corporate legal information go to:
> http://www.cisco.com/web/about/doing_business/legal/cri/
>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel