gcc / icc confliict with pnetcdf 1.7.0

Wei-keng Liao wkliao at eecs.northwestern.edu
Sun Apr 17 18:56:17 CDT 2016


Hi, Carol

ncoffsets is a sequential program developed to be compiled by a non-MPI
compiler (default gcc) so it can run on the machine PnetCDF is built.
In a cross-compile environment, this means ncoffsets can be run on the
build machine (eg. login node).

As for using gcc to compile ncoffsets utility tool, I think in your
case, "unset CPATH" is the right solution. Otherwise, you probably will
see the same error message when compiling a C program that includes the
header file inttypes.h.

My understanding of autotools is that message you got simply says your
icc is compatible to gcc for the features required by autotools. So you
can ignore that message.

I think you are safe to use icc based MPI compiler.
I use icc 16.0.0 for testing PnetCDF.

Wei-keng

On Apr 17, 2016, at 3:30 PM, Carl Ponder wrote:

> I'm building pnetcdf 1.7.0 using the Intel 15.0 compiler and ran into this error:
> make -w -C ncoffsets
> make[3]: Entering directory `/cm/extra/apps/PNetCDF/1.7.0/Intel-15.0_OpenMPI-1.10.2_CUDA-7.5/distro/src/utils/ncoffsets'
> /usr/bin/gcc -o ncoffsets ncoffsets.c
> In file included from /usr/include/inttypes.h:27:0,
>                  from ncoffsets.c:16:
> /cm/shared/apps/intel/composer_xe/2015.5.223/compiler/include/stdint.h:43:54: error: missing binary operator before token "("
>      defined(__has_include_next) && __has_include_next(<stdint.h>)
>                                                       ^
> /cm/shared/apps/intel/composer_xe/2015.5.223/compiler/include/stdint.h:292:1: error: unknown type name ‘uint__INTPTR_WIDTH___t’
>  typedef __uintn_t(__INTPTR_WIDTH__) uintptr_t;
>  ^
> make[3]: *** [ncoffsets] Error 1
> make[3]: Leaving directory `/cm/extra/apps/PNetCDF/1.7.0/Intel-15.0_OpenMPI-1.10.2_CUDA-7.5/distro/src/utils/ncoffsets'
> I think the problem is that gcc is trying to use the Intel versions of the header-files, but the question is "why?".
> My workaround is to use
> unset CPATH
> after I've loaded all my environment modules.
> But a key question is why gcc is being invoked when I've made these settings
> export  CC=/cm/shared/apps/intel/composer_xe/2015.5.223/bin/intel64/icc
> export CXX=/cm/shared/apps/intel/composer_xe/2015.5.223/bin/intel64/icpc
> export F77=/cm/shared/apps/intel/composer_xe/2015.5.223/bin/intel64/ifort
> export F90=/cm/shared/apps/intel/composer_xe/2015.5.223/bin/intel64/ifort
> export  FC=/cm/shared/apps/intel/composer_xe/2015.5.223/bin/intel64/ifort
> 
> export  MPICC=/cm/extra/apps/OpenMPI/1.10.2/Intel-15.0_CUDA-7.5_HWLoc-1.11.2/bin/mpicc
> export MPICXX=/cm/extra/apps/OpenMPI/1.10.2/Intel-15.0_CUDA-7.5_HWLoc-1.11.2/bin/mpicxx
> export MPIF77=/cm/extra/apps/OpenMPI/1.10.2/Intel-15.0_CUDA-7.5_HWLoc-1.11.2/bin/mpif77
> export MPIF90=/cm/extra/apps/OpenMPI/1.10.2/Intel-15.0_CUDA-7.5_HWLoc-1.11.2/bin/mpif90
> During the configure phase I see these messages (excerpted):
> checking for gcc... /cm/extra/apps/OpenMPI/1.10.2/Intel-15.0_CUDA-7.5_HWLoc-1.11.2/bin/mpicc
> checking whether the C compiler works... yes
> checking whether we are using the GNU C compiler... yes
> checking whether we are using the GNU C++ compiler... yes
> checking whether we are using the GNU Fortran 77 compiler... no
> The OpenMPI in this case had been built on top of the Intel compilers.
> I've seen messages like this when I've built other utilities, so either
> 	• I really am falling through to the GCC compilers, or
> 	• Both icc & gcc look identical to the version of autotools on the system I'm using. Do the tests really make them look identical?
> On the flipside, I don't get these messages when I use the PGI compilers.
> But gcc is used to build the ncoffsets in this case as well, it just doesn't fail.
> Thanks,
> 
>                       Carl Ponder
> 
> This email message is for the sole use of the intended recipient(s) and may contain confidential information.  Any unauthorized review, use, disclosure or distribution is prohibited.  If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.



More information about the parallel-netcdf mailing list