Problem building PNetCDF 1.12.0 with GCC 7.4.0 and OpenMPI-4.0.2

Wei-keng Liao wkliao at eecs.northwestern.edu
Wed Oct 23 12:44:06 CDT 2019


Hi, Carl

A fix was developed and has been committed into the PnetCDF repo.
If you would like to give it a try, please let me know whether it
resolves the problem. Thanks.

Wei-keng

> On Oct 21, 2019, at 11:51 AM, Wei-keng Liao via parallel-netcdf <parallel-netcdf at lists.mcs.anl.gov> wrote:
> 
> 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