Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Problem building OpenMPI with PGI compilers
From: Gus Correa (gus_at_[hidden])
Date: 2009-12-09 16:50:41


Hi David

Last I tried, OpenMPI 1.3.2, PGI (8.0-4) was problematic,
particularly for C and C++.

I eventually settled down with a hybrid gcc, g++, and pgf90
(for both OpenMPI F77 and F90 bindings).
Even this required a trick to avoid the "-pthread" flag
to be inserted among the pgf90 flags (where it doesn't belong).
Yes, libtool was also part of the problem back then.
You may find my postings about on this list archives - early 2009 -,
along with Jeff Squyres' solution for the problem.

I also built a full Gnu version (gcc, g++, gfortran, gfortran)
of OpenMPI that works well.
Intel and hybrid Gnu(gcc,g++)+Intel(ifort for F77 and F90)
versions of OpenMPI also work right.
We need multiple compiler support here anyway.

My $0.02
Gus Correa
---------------------------------------------------------------------
Gustavo Correa
Lamont-Doherty Earth Observatory - Columbia University
Palisades, NY, 10964-8000 - USA
---------------------------------------------------------------------

David Turner wrote:
> Hi all,
>
> My first ever attempt to build OpenMPI. Platform is Sun Sunfire x4600
> M2 servers, running Scientific Linux version 5.3. Trying to build
> OpenMPI 1.4 (as of today; same problems yesterday with 1.3.4).
> Trying to use PGI version 10.0.
>
> As a first attempt, I set CC, CXX, F77, and FC, then did "configure"
> and "make". Make ends with:
>
> libtool: link: pgCC --prelink_objects --instantiation_dir Template.dir
> .libs/mpicxx.o .libs/intercepts.o .libs/comm.o .libs/datatype.o
> .libs/win.o .libs/file.o -Wl,--rpath
> -Wl,/project/projectdirs/mpccc/usg/software/tnt/openmpi/openmpi-1.4/ompi/.libs
> -Wl,--rpath
> -Wl,/project/projectdirs/mpccc/usg/software/tnt/openmpi/openmpi-1.4/orte/.libs
> -Wl,--rpath
> -Wl,/project/projectdirs/mpccc/usg/software/tnt/openmpi/openmpi-1.4/opal/.libs
> -Wl,--rpath -Wl,/global/common/tesla/usg/openmpi/1.4/lib
> -L/project/projectdirs/mpccc/usg/software/tnt/openmpi/openmpi-1.4/orte/.libs
> -L/project/projectdirs/mpccc/usg/software/tnt/openmpi/openmpi-1.4/opal/.libs
> ../../../ompi/.libs/libmpi.so
> /project/projectdirs/mpccc/usg/software/tnt/openmpi/openmpi-1.4/orte/.libs/libopen-rte.so
> /project/projectdirs/mpccc/usg/software/tnt/openmpi/openmpi-1.4/opal/.libs/libopen-pal.so
> -ldl -lnsl -lutil -lpthread
> pgCC-Error-Unknown switch: --instantiation_dir
> make[2]: *** [libmpi_cxx.la] Error 1
>
> So I Googled "instantiation_dir openmpi", which led me to:
>
> http://cia.vc/stats/project/OMPI?s_message=3
>
> where I see:
>
> There's still something wrong with the C++ support, however; I get
> errors about a template directory switch when compiling the C++ MPI
> bindings (doesn't happen with PGI 9.0). Still working on this... it
> feels like it's still a Libtool issue because OMPI is not putting in
> this compiler flag as far as I can tell:
>
> {{{
> /bin/sh ../../../libtool --tag=CXX --mode=link pgCC -g -version-info
> 0:0:0 -export-dynamic -o libmpi_cxx.la -rpath /home/jsquyres/bogus/lib
> mpicxx.lo intercepts.lo comm.lo datatype.lo win.lo file.lo
> ../../../ompi/libmpi.la -lnsl -lutil -lpthread
> libtool: link: tpldir=Template.dir
> libtool: link: rm -rf Template.dir
> libtool: link: pgCC --prelink_objects --instantiation_dir Template.dir
> .libs/mpicxx.o .libs/intercepts.o .libs/comm.o .libs/datatype.o
> .libs/win.o .libs/file.o -Wl,--rpath
> -Wl,/users/jsquyres/svn/ompi-1.3/ompi/.libs -Wl,--rpath
> -Wl,/users/jsquyres/svn/ompi-1.3/orte/.libs -Wl,--rpath
> -Wl,/users/jsquyres/svn/ompi-1.3/opal/.libs -Wl,--rpath
> -Wl,/home/jsquyres/bogus/lib -L/users/jsquyres/svn/ompi-1.3/orte/.libs
> -L/users/jsquyres/svn/ompi-1.3/opal/.libs ../../../ompi/.libs/libmpi.so
> /users/jsquyres/svn/ompi-1.3/orte/.libs/libopen-rte.so
> /users/jsquyres/svn/ompi-1.3/opal/.libs/libopen-pal.so -ldl -lnsl -lutil
> -lpthread
> pgCC-Error-Unknown switch: --instantiation_dir
> make: *** [libmpi_cxx.la] Error 1
> }}}
>
> I noticed the comment "doesn't happen with PGI 9.0", so I re-did the
> entire process with PGI 9.0 instead of 10.0, but I get the same error!
>
> Any suggestions? Let me know if I should provide full copies of the
> configure and make output. Thanks!
>