[mpich-discuss] why does a non-standard GCC in PATH break my all-Intel MPICH config?

Jed Brown jedbrown at mcs.anl.gov
Fri Jul 5 17:25:05 CDT 2013


Jeff Hammond <jeff.science at gmail.com> writes:

> One corresponds to an MPICH configure with my default environment and
> the other with a vanilla environment not including my GCC 4.8.1
> install.  When the environment knows about GCC 4.8.1, configure tests
> related to C++ fail.

See the icc(1) man page:

   GNU* gcc Interoperability
       C++ compilers  are  interoperable  if  they  can  link
       object  files  and libraries generated by one compiler
       with object  files  and  libraries  generated  by  the
       second  compiler,  and  the  resulting executable runs
       successfully.  Some  GNU*   gcc   versions   are   not
       interoperable,  some  versions  are  interoperable. By
       default, the Intel compiler will generate code that is
       interoperable with the version of gcc it finds on your
       system.

       The Intel(R) C++ Compiler options that affect GNU* gcc
       interoperability include:

       · -cxxlib

       · -gcc-name

       · -gcc-version

       · -gxx-name

       · -fabi-version

       · -no-gcc   (see   gcc   Predefined  Macros  for  more
         information)

       The Intel(R) C++ Compiler is interoperable  with  GNU*
       gcc  compiler  versions  greater than or equal to 3.2.
       See the Intel(R) C++ Compiler Documentation  for  more
       information.


We just debugged essentially this problem from some BW users that
couldn't manage to have exactly the same GCC modules loaded when they
configured PETSc as when they ran later (it took way too many emails to
pin them down on this bit of the environment changing).  The gcc-version
also affects the dialect and attributes, so for example, when icc finds
a recent version of gcc,

  __attribute((deprecated("explanation why")))

works, but if it finds an old version of gcc, then "explanation why" is
not understood, so only

  __attribute((deprecated))

can be used.  This dependence on whatever gcc is found in the path is
horrendous for reproducibility since it makes it harder to create
configurations that don't depend on the environment and even if you
concede dependence on the environment, few people realize that the
Intel's compilers change behavior based on the version of gcc found in
PATH.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mpich.org/pipermail/discuss/attachments/20130705/f6d0777a/attachment.sig>


More information about the discuss mailing list