Compiling OpenMPI 1.6 fails with PGI 12.8

The following occurs when using PGI 12.8 to compile OpenMPI 1.6 (any sub-version, including 1.6 and a 1.6.2 nightly). The OS is CentOS 5.8. Any ideas?

*** C++ compiler and preprocessor
checking whether we are using the GNU C++ compiler... no
checking whether pgcpp accepts -g... no
checking dependency style of pgcpp... none
checking how to run the C++ preprocessor... /lib/cpp
checking for the C++ compiler vendor... unknown
checking if C and C++ are link compatible... no
**********************************************************************
* It appears that your C++ compiler is unable to link against object
* files created by your C compiler.  This generally indicates either
* a conflict between the options specified in CFLAGS and CXXFLAGS
* or a problem with the local compiler installation.  More
* information (including exactly what command was given to the
* compilers and what error resulted when the commands were executed) is
* available in the config.log file in this directory.
**********************************************************************
configure: error: C and C++ compilers are not link compatible.  Can not continue.

Edit: corrected OS. Oops, wrong server. :)

Hi Adam,

Can you double check that you’re able to compile a simple program using both pgcpp and pgcc? Also, what configure options are you using?

Best Regards,
Mat

Hi All.

I too am not able to compile OpenMPI 1.6.x I tried 1.6.0 and 1.6.3 and it fails with PGI 12.10.

My PGI compilers work just fine:

[jfarran@hpc ~]$ module load pgi/12.10
[jfarran@hpc ~]$ pgcpp simple.c
[jfarran@hpc ~]$ file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
[jfarran@hpc ~]$ pgcc simple.c
[jfarran@hpc ~]$ file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

Hi Joseph,

I just downloaded OpenMPI 1.6.3 and didn’t have any issues getting it to configure, build, and install with PGI 12.10. What error are you getting? How are you setting your environment variables? In some shells, the “env” command doesn’t work so you may need to set the environment variables before running configure.

  • Mat

Hi Matt.

Here is my config file and the last few lines of where it is aborting. Compiling on CentOS 6.3.

module load gcc/4.7.2
module load pgi/12.10
DEST=/data/apps/mpi/openmpi-1.6.0/pgi-12.10

CPP=which pgprepro
CC=which pgcc
CXX=which pgcpp
F77=which pgfortran
FC=which pgfortran
F90=which pgfortran
./configure
–with-sge
–prefix=$DEST

make[1]: Leaving directory /data/apps/sources/openmpi-1.6/orte' Making install in ompi make[1]: Entering directory /data/apps/sources/openmpi-1.6/ompi’
Making install in include
make[2]: Entering directory /data/apps/sources/openmpi-1.6/ompi/include' make[3]: Entering directory /data/apps/sources/openmpi-1.6/ompi/include’
make[3]: Nothing to be done for install-exec-am'. test -z "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include" || /bin/mkdir -p "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include" /usr/bin/install -c -m 644 mpif-common.h mpif-mpi-io.h '/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include' test -z "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include" || /bin/mkdir -p "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include" test -z "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include" || /bin/mkdir -p "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include" test -z "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include" || /bin/mkdir -p "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include" /usr/bin/install -c -m 644 mpi.h mpi-ext.h mpi_portable_platform.h mpif.h mpif-config.h '/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include' test -z "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include/openmpi" || /bin/mkdir -p "/data/apps/mpi/openmpi-1.6.0/pgi-12.10/include/openmpi" make[3]: Leaving directory /data/apps/sources/openmpi-1.6/ompi/include’
make[2]: Leaving directory /data/apps/sources/openmpi-1.6/ompi/include' Making install in datatype make[2]: Entering directory /data/apps/sources/openmpi-1.6/ompi/datatype’
CC ompi_datatype_module.lo
PGC-W-0114-More than one type specified (/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: 149)
PGC-W-0143-Useless typedef declaration (no declarators present) (/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: 149)
PGC-S-0039-Use of undeclared variable INT64_T (ompi_datatype_module.c: 259)
PGC-S-0039-Use of undeclared variable AINT (ompi_datatype_module.c: 259)
PGC-S-0074-Non-constant expression in initializer (ompi_datatype_module.c: 259)
PGC-W-0093-Type cast required for this conversion of constant (ompi_datatype_module.c: 259)
PGC/x86-64 Linux 12.10-0: compilation completed with severe errors
make[2]: *** [ompi_datatype_module.lo] Error 1
make[2]: Leaving directory /data/apps/sources/openmpi-1.6/ompi/datatype' make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory /data/apps/sources/openmpi-1.6/ompi’
make: *** [install-recursive] Error 1

We have our own built gcc 4.7.2. Not sure why it is trying to use gcc 4.4.6 above?