Discussion:
[OMPI users] Help with Open MPI 2.1.0 and PGI 16.10: Configure and C++
Matt Thompson
2017-03-22 19:12:36 UTC
Permalink
All, I'm hoping one of you knows what I might be doing wrong here. I'm
trying to use Open MPI 2.1.0 for PGI 16.10 (Community Edition) on macOS.
Now, I built it a la:

http://www.pgroup.com/userforum/viewtopic.php?p=21105#21105

and found that it built, but the resulting mpifort, etc were just not good.
Couldn't even do Hello World.

So, I thought I'd start from the beginning. I tried running:

configure --disable-wrapper-rpath CC=pgcc CXX=pgc++ FC=pgfortran
--prefix=/Users/mathomp4/installed/Compiler/pgi-16.10/openmpi/2.1.0
but when I did I saw this:

*** C++ compiler and preprocessor
checking whether we are using the GNU C++ compiler... yes
checking whether pgc++ accepts -g... yes
checking dependency style of pgc++... none
checking how to run the C++ preprocessor... pgc++ -E
checking for the C++ compiler vendor... gnu

Well, that's not the right vendor. So, I took a look at configure and I saw
that at least some detection for PGI was a la:

pgCC* | pgcpp*)
# Portland Group C++ compiler
case `$CC -V` in
*pgCC\ [1-5].* | *pgcpp\ [1-5].*)

pgCC* | pgcpp*)
# Portland Group C++ compiler
lt_prog_compiler_wl_CXX='-Wl,'
lt_prog_compiler_pic_CXX='-fpic'
lt_prog_compiler_static_CXX='-Bstatic'
;;

Ah. PGI 16.9+ now use pgc++ to do C++ compiling, not pgcpp. So, I hacked
configure so that references to pgCC (nonexistent on macOS) are gone and
all pgcpp became pgc++, but:

*** C++ compiler and preprocessor
checking whether we are using the GNU C++ compiler... yes
checking whether pgc++ accepts -g... yes
checking dependency style of pgc++... none
checking how to run the C++ preprocessor... pgc++ -E
checking for the C++ compiler vendor... gnu

Well, at this point, I think I'm stopping until I get help. Will this chunk
of configure always return gnu for PGI? I know the C part returns 'portland
group':

*** C compiler and preprocessor
checking for gcc... (cached) pgcc
checking whether we are using the GNU C compiler... (cached) no
checking whether pgcc accepts -g... (cached) yes
checking for pgcc option to accept ISO C89... (cached) none needed
checking whether pgcc understands -c and -o together... (cached) yes
checking for pgcc option to accept ISO C99... none needed
checking for the C compiler vendor... portland group

so I thought the C++ section would as well. I also tried passing in
--enable-mpi-cxx, but that did nothing.

Is this just a red herring? My real concern is with pgfortran/mpifort, but
I thought I'd start with this. If this is okay, I'll move on and detail the
fortran issues I'm having.

Matt
--
Matt Thompson

Man Among Men
Fulcrum of History
Reuti
2017-03-23 11:55:43 UTC
Permalink
Hi,
Post by Matt Thompson
[
]
This is not unique to macOS. pgCC used STLPort STL and is no longer included with their compiler suite, pgc++ now uses a GCC compatible library format and replaces the former one on Linux too.

There I get, ignoring the gnu output during `configure` and compiling anyway:

$ mpic++ --version

pgc++ 16.10-0 64-bit target on x86-64 Linux -tp bulldozer
The Portland Group - PGI Compilers and Tools
Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.

Maybe some options for the `mpic++` wrapper were just set in a wrong way?

===

Nevertheless: did you see the error on the Mac at the end of the `configure` step too, or was it gone after the hints on the discussion's link you posted? As I face it there still about "libeevent".

-- Reuti
Post by Matt Thompson
*** C++ compiler and preprocessor
checking whether we are using the GNU C++ compiler... yes
checking whether pgc++ accepts -g... yes
checking dependency style of pgc++... none
checking how to run the C++ preprocessor... pgc++ -E
checking for the C++ compiler vendor... gnu
*** C compiler and preprocessor
checking for gcc... (cached) pgcc
checking whether we are using the GNU C compiler... (cached) no
checking whether pgcc accepts -g... (cached) yes
checking for pgcc option to accept ISO C89... (cached) none needed
checking whether pgcc understands -c and -o together... (cached) yes
checking for pgcc option to accept ISO C99... none needed
checking for the C compiler vendor... portland group
so I thought the C++ section would as well. I also tried passing in --enable-mpi-cxx, but that did nothing.
Is this just a red herring? My real concern is with pgfortran/mpifort, but I thought I'd start with this. If this is okay, I'll move on and detail the fortran issues I'm having.
Matt
--
Matt Thompson
Man Among Men
Fulcrum of History
_______________________________________________
users mailing list
https://rfd.newmexicoconsortium.org/mailman/listinfo/users
Gilles Gouaillardet
2017-03-23 13:05:22 UTC
Permalink
Matt,

a C++ compiler is required to configure Open MPI.
That being said, C++ compiler is only used if you build the C++ bindings
(That were removed from MPI-3)
And unless you plan to use the mpic++ wrapper (with or without the C++
bindings),
a valid C++ compiler is not required at all.
/* configure still requires one, and that could be improved */

My point is you should not worry too much about configure messages related
to C++,
and you should instead focus on the Fortran issue.

Cheers,

Gilles
Post by Matt Thompson
All, I'm hoping one of you knows what I might be doing wrong here. I'm
trying to use Open MPI 2.1.0 for PGI 16.10 (Community Edition) on macOS.
http://www.pgroup.com/userforum/viewtopic.php?p=21105#21105
and found that it built, but the resulting mpifort, etc were just not
good. Couldn't even do Hello World.
configure --disable-wrapper-rpath CC=pgcc CXX=pgc++ FC=pgfortran
--prefix=/Users/mathomp4/installed/Compiler/pgi-16.10/openmpi/2.1.0
*** C++ compiler and preprocessor
checking whether we are using the GNU C++ compiler... yes
checking whether pgc++ accepts -g... yes
checking dependency style of pgc++... none
checking how to run the C++ preprocessor... pgc++ -E
checking for the C++ compiler vendor... gnu
Well, that's not the right vendor. So, I took a look at configure and I
pgCC* | pgcpp*)
# Portland Group C++ compiler
case `$CC -V` in
*pgCC\ [1-5].* | *pgcpp\ [1-5].*)
pgCC* | pgcpp*)
# Portland Group C++ compiler
lt_prog_compiler_wl_CXX='-Wl,'
lt_prog_compiler_pic_CXX='-fpic'
lt_prog_compiler_static_CXX='-Bstatic'
;;
Ah. PGI 16.9+ now use pgc++ to do C++ compiling, not pgcpp. So, I hacked
configure so that references to pgCC (nonexistent on macOS) are gone and
*** C++ compiler and preprocessor
checking whether we are using the GNU C++ compiler... yes
checking whether pgc++ accepts -g... yes
checking dependency style of pgc++... none
checking how to run the C++ preprocessor... pgc++ -E
checking for the C++ compiler vendor... gnu
Well, at this point, I think I'm stopping until I get help. Will this
chunk of configure always return gnu for PGI? I know the C part returns
*** C compiler and preprocessor
checking for gcc... (cached) pgcc
checking whether we are using the GNU C compiler... (cached) no
checking whether pgcc accepts -g... (cached) yes
checking for pgcc option to accept ISO C89... (cached) none needed
checking whether pgcc understands -c and -o together... (cached) yes
checking for pgcc option to accept ISO C99... none needed
checking for the C compiler vendor... portland group
so I thought the C++ section would as well. I also tried passing in
--enable-mpi-cxx, but that did nothing.
Is this just a red herring? My real concern is with pgfortran/mpifort, but
I thought I'd start with this. If this is okay, I'll move on and detail the
fortran issues I'm having.
Matt
--
Matt Thompson
Man Among Men
Fulcrum of History
Matt Thompson
2017-03-24 11:48:12 UTC
Permalink
Gilles,

The library I have having issues linking is ESMF and it is a C++/Fortran
application. From
http://www.earthsystemmodeling.org/esmf_releases/non_public/ESMF_7_0_0/ESMF_usrdoc/node9.html#SECTION00092000000000000000
:

The following compilers and utilities *are required* for compiling, linking
Fortran90 (or later) compiler;
C++ compiler;
MPI implementation compatible with the above compilers (but see below);
GNU's gcc compiler - for a standard cpp preprocessor implementation;
GNU make;
Perl - for running test scripts.
(Emphasis mine)

This is why I am concerned. For now, I'll build Open MPI with the (possibly
useless) C++ support for PGI and move on to the Fortran issue (which I'll
detail in another email).

But, as I *need* ESMF for my application, it would be good to get an mpicxx
that I can have confidence in with PGI.

Matt


On Thu, Mar 23, 2017 at 9:05 AM, Gilles Gouaillardet <
Matt,
a C++ compiler is required to configure Open MPI.
That being said, C++ compiler is only used if you build the C++ bindings
(That were removed from MPI-3)
And unless you plan to use the mpic++ wrapper (with or without the C++
bindings),
a valid C++ compiler is not required at all.
/* configure still requires one, and that could be improved */
My point is you should not worry too much about configure messages related
to C++,
and you should instead focus on the Fortran issue.
Cheers,
Gilles
Post by Matt Thompson
All, I'm hoping one of you knows what I might be doing wrong here. I'm
trying to use Open MPI 2.1.0 for PGI 16.10 (Community Edition) on macOS.
http://www.pgroup.com/userforum/viewtopic.php?p=21105#21105
and found that it built, but the resulting mpifort, etc were just not
good. Couldn't even do Hello World.
configure --disable-wrapper-rpath CC=pgcc CXX=pgc++ FC=pgfortran
--prefix=/Users/mathomp4/installed/Compiler/pgi-16.10/openmpi/2.1.0
*** C++ compiler and preprocessor
checking whether we are using the GNU C++ compiler... yes
checking whether pgc++ accepts -g... yes
checking dependency style of pgc++... none
checking how to run the C++ preprocessor... pgc++ -E
checking for the C++ compiler vendor... gnu
Well, that's not the right vendor. So, I took a look at configure and I
pgCC* | pgcpp*)
# Portland Group C++ compiler
case `$CC -V` in
*pgCC\ [1-5].* | *pgcpp\ [1-5].*)
pgCC* | pgcpp*)
# Portland Group C++ compiler
lt_prog_compiler_wl_CXX='-Wl,'
lt_prog_compiler_pic_CXX='-fpic'
lt_prog_compiler_static_CXX='-Bstatic'
;;
Ah. PGI 16.9+ now use pgc++ to do C++ compiling, not pgcpp. So, I hacked
configure so that references to pgCC (nonexistent on macOS) are gone and
*** C++ compiler and preprocessor
checking whether we are using the GNU C++ compiler... yes
checking whether pgc++ accepts -g... yes
checking dependency style of pgc++... none
checking how to run the C++ preprocessor... pgc++ -E
checking for the C++ compiler vendor... gnu
Well, at this point, I think I'm stopping until I get help. Will this
chunk of configure always return gnu for PGI? I know the C part returns
*** C compiler and preprocessor
checking for gcc... (cached) pgcc
checking whether we are using the GNU C compiler... (cached) no
checking whether pgcc accepts -g... (cached) yes
checking for pgcc option to accept ISO C89... (cached) none needed
checking whether pgcc understands -c and -o together... (cached) yes
checking for pgcc option to accept ISO C99... none needed
checking for the C compiler vendor... portland group
so I thought the C++ section would as well. I also tried passing in
--enable-mpi-cxx, but that did nothing.
Is this just a red herring? My real concern is with pgfortran/mpifort,
but I thought I'd start with this. If this is okay, I'll move on and detail
the fortran issues I'm having.
Matt
--
Matt Thompson
Man Among Men
Fulcrum of History
_______________________________________________
users mailing list
https://rfd.newmexicoconsortium.org/mailman/listinfo/users
--
Matt Thompson

Man Among Men
Fulcrum of History
Loading...