Problem building PNetCDF 1.12.0 with GCC 7.4.0 and OpenMPI-4.0.2

Wei-keng Liao wkliao at eecs.northwestern.edu
Mon Oct 21 11:51:19 CDT 2019


I dig this a little bit into OpenMPI.

It appears to me that some deprecated MPI constants like
MPI_COMBINER_HVECTOR_INTEGER are defined as error messages
when using some newer versions of C compilers with
__STDC_VERSION__ >= 201112L. When using earlier versions,
those deprecated MPI constants are not defined at all.
So the same errors will still happen when using newer C
compilers (gcc and others, based on their __STDC_VERSION__).
I created an issue on OpenMPI github:
https://github.com/open-mpi/ompi/issues/7099

As you have figured out, adding configure option
"--enable-mpi1-compatibility” to rebuild OpenMPI 4.0.2 did
resolve this issue for PnetCDF 1.12.0.

Note MPICH does not have such an issue, as all deprecated
constants are still defined (not to error messages), but
that may change in the future.

I will work on something in PnetCDF, so customized built
OpenMPI is not required. Thanks for reporting this problem.
It helps improve the PnetCDF's portability.

Wei-keng

> On Oct 20, 2019, at 8:37 PM, Carl Ponder <cponder at nvidia.com> wrote:
> 
> On 10/20/19 7:36 PM, Wei-keng Liao wrote:
>> Since you mentioned you have checked file src/include/config.h,
>> could you please let me know whether this line below appears there?
>> 
>> #define HAVE_DECL_MPI_COMBINER_HVECTOR_INTEGER 0
>> 
>> This line shows that PnetCDF configure.ac does check whether the
>> deprecated MPI constant MPI_COMBINER_HVECTOR_INTEGER is still
>> defined in mpi.h. Therefore, that compile error from line 390 of
>> file dtype_decode.c should not happen.
>> 
>> 389 #if defined HAVE_DECL_MPI_COMBINER_HVECTOR_INTEGER && HAVE_DECL_MPI_COMBINER_HVECTOR_INTEGER
>> 390         case MPI_COMBINER_HVECTOR_INTEGER:
>> 391 #endif
>> 
> These builds of 1.12.0 have the setting 1
> PGI-19.9_OpenMPI-4.0.1.LLVM/distro/src/include/config.h:#define HAVE_DECL_MPI_COMBINER_HVECTOR_INTEGER 1
> PGI-19.9_OpenMPI-4.0.1/distro/src/include/config.h:#define HAVE_DECL_MPI_COMBINER_HVECTOR_INTEGER 1
> and these have the setting 0
> PGI-19.9_OpenMPI-4.0.2.LLVM/distro/src/include/config.h:#define HAVE_DECL_MPI_COMBINER_HVECTOR_INTEGER 0
> PGI-19.9_OpenMPI-4.0.2/distro/src/include/config.h:#define HAVE_DECL_MPI_COMBINER_HVECTOR_INTEGER 0
> So going from OpenMPI 4.0.1 -> 4.0.2 caused the change.
> In this case
> GCC-7.4.0_OpenMPI-4.0.2/distro/src/include/config.h:#define HAVE_DECL_MPI_COMBINER_HVECTOR_INTEGER 1
> I had build GCC with the flag suggested by Nick Papior
> --enable-mpi1-compatibility
> and the problem went away for my builds of both PNetCDF & Valgrind.
> Somehow this had been a problem building with GCC but not PGI.
> 
>         -- Carl
> 
> 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