Bug 413251 - Compilation error using GCC 7.4.0 & OpenMPI 4.0.2
Summary: Compilation error using GCC 7.4.0 & OpenMPI 4.0.2
Status: REPORTED
Alias: None
Product: valgrind
Classification: Developer tools
Component: general (show other bugs)
Version: 3.15 SVN
Platform: Ubuntu Linux
: NOR normal
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-10-20 18:30 UTC by Carl Ponder
Modified: 2020-12-23 10:56 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Avoid usage of deprecated MPI Datatypes (99.87 KB, text/plain)
2020-12-23 10:56 UTC, Daniel Doe
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Carl Ponder 2019-10-20 18:30:17 UTC
SUMMARY
I get these errors in the build:

Making all in mpi
make[2]: Entering directory '/gpfs/fs1/SHARE/Utils/Valgrind/3.15.0/GCC-7.4.0_OpenMPI-4.0.2/distro/mpi'
/gpfs/fs1/SHARE/Utils/OpenMPI/4.0.2/GCC-7.4.0_CUDA-10.1.243.0_418.87.00_UCX-2019-10-19_HWLoc-2.1.0_ZLib-1.2.11_NUMActl-2.0.13/bin/mpicc    -I../include  -g -O -fno-omit-frame-
pointer -Wall -fpic -m64 -Wno-deprecated-declarations  -MT libmpiwrap_amd64_linux_so-libmpiwrap.o -MD -MP -MF .deps/libmpiwrap_amd64_linux_so-libmpiwrap.Tpo -c -o libmpiwrap_a
md64_linux_so-libmpiwrap.o `test -f 'libmpiwrap.c' || echo './'`libmpiwrap.c
In file included from libmpiwrap.c:116:0:
libmpiwrap.c: In function ‘showTy’:
libmpiwrap.c:281:19: error: expected expression before ‘_Static_assert’
    else if (ty == MPI_UB)             fprintf(f,"UB");
                   ^
libmpiwrap.c:282:19: error: expected expression before ‘_Static_assert’
    else if (ty == MPI_LB)             fprintf(f,"LB");
                   ^
libmpiwrap.c: In function ‘showCombiner’:
libmpiwrap.c:354:12: error: expected expression before ‘_Static_assert’
       case MPI_COMBINER_HVECTOR_INTEGER: fprintf(f, "HVECTOR_INTEGER"); break;
            ^
libmpiwrap.c:354:12: error: expected expression before ‘_Static_assert’
libmpiwrap.c:354:40: error: expected expression before ‘:’ token
       case MPI_COMBINER_HVECTOR_INTEGER: fprintf(f, "HVECTOR_INTEGER"); break;
                                        ^
In file included from libmpiwrap.c:116:0:
libmpiwrap.c:359:12: error: expected expression before ‘_Static_assert’
       case MPI_COMBINER_HINDEXED_INTEGER: fprintf(f, "HINDEXED_INTEGER"); break;
            ^
libmpiwrap.c:359:12: error: expected expression before ‘_Static_assert’
libmpiwrap.c:359:41: error: expected expression before ‘:’ token
       case MPI_COMBINER_HINDEXED_INTEGER: fprintf(f, "HINDEXED_INTEGER"); break;
                                         ^
In file included from libmpiwrap.c:116:0:
libmpiwrap.c:366:12: error: expected expression before ‘_Static_assert’
       case MPI_COMBINER_STRUCT_INTEGER: fprintf(f, "STRUCT_INTEGER"); break;
            ^
In file included from libmpiwrap.c:116:0:
libmpiwrap.c:366:12: error: expected expression before ‘_Static_assert’
       case MPI_COMBINER_STRUCT_INTEGER: fprintf(f, "STRUCT_INTEGER"); break;
            ^
libmpiwrap.c:366:12: error: expected expression before ‘_Static_assert’
libmpiwrap.c:366:39: error: expected expression before ‘:’ token
       case MPI_COMBINER_STRUCT_INTEGER: fprintf(f, "STRUCT_INTEGER"); break;
                                       ^
libmpiwrap.c: In function ‘extentOfTy’:
libmpiwrap.c:462:8: warning: implicit declaration of function ‘PMPI_Type_extent’; did you mean ‘MPI_Type_extent’? [-Wimplicit-function-declaration]
    r = PMPI_Type_extent(ty, &n);
        ^~~~~~~~~~~~~~~~
        MPI_Type_extent
In file included from libmpiwrap.c:116:0:
libmpiwrap.c: In function ‘walk_type’:
libmpiwrap.c:736:17: error: expected expression before ‘_Static_assert’
       if (ty == MPI_LB || ty == MPI_UB)
                 ^
Makefile:645: recipe for target 'libmpiwrap_amd64_linux_so-libmpiwrap.o' failed
make[2]: *** [libmpiwrap_amd64_linux_so-libmpiwrap.o] Error 1
make[2]: Leaving directory '/gpfs/fs1/SHARE/Utils/Valgrind/3.15.0/GCC-7.4.0_OpenMPI-4.0.2/distro/mpi'
Makefile:841: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/gpfs/fs1/SHARE/Utils/Valgrind/3.15.0/GCC-7.4.0_OpenMPI-4.0.2/distro'
Makefile:710: recipe for target 'all' failed
make: *** [all] Error 2


STEPS TO REPRODUCE
I'm using these configuration parameters

+ ./configure --with-mpicc=/gpfs/fs1/SHARE/Utils/OpenMPI/4.0.2/GCC-7.4.0_CUDA-10.1.243.0_418.87.00_UCX-2019-10-19_HWLoc-2.1.0_ZLib-1.2.11_NUMActl-2.0.13/bin/mpicc --prefix=/gpfs/fs1/SHARE/Utils/Valgrind/3.15.0/GCC-7.4.0_OpenMPI-4.0.2


SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Ubuntu 18,04
OpenMPI:  4.0.2

ADDITIONAL INFORMATION
I believe the list of constants has changed between OpenMPI 4.0.1 & 4.0.2.
I'm seeing similar breakages building the latest PNetCDF.
I'm thinking there may be a flag to get around this though.
Comment 1 Carl Ponder 2019-10-20 18:32:45 UTC
This is the 3.15.0 release, not just a circa-3.15 snapshot from the SVN repository. Shouldn't you update the Version list?
Comment 2 Carl Ponder 2019-10-20 21:33:34 UTC
Building OpenMPI with

--enable-mpi1-compatibility"

appears to solve the problem for both Valgrind and PNetCDF.
I'm going to close this issue now.
It looks like OpenMPI broke compatibility going from 4.0.1 -> 4.0.2.
Can anyone comment on the Valgrind dependency though?
Comment 3 Bug Janitor Service 2019-11-04 04:33:09 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 4 Carl Ponder 2019-11-04 11:57:56 UTC
(I had put this into "NEEDSINFO" state, but evidently that means "NEEDSINFO" from me not you!)

I'm going to hold this open because the MPI 1 support might not always be available for OpenMPI, and you ought to consider adjusting your interface for future use.
Comment 5 Julian Seward 2019-12-28 19:03:02 UTC
Carl, how hard would it be for you to make a patch to fix this
properly on the Valgrind side?
Comment 6 Carl Ponder 2019-12-29 06:40:16 UTC
I wouldn't have a clue how.
Comment 7 Daniel Doe 2020-12-23 10:54:33 UTC
Hey Folks,

I came also across this error and manually altered the valgrind-3.16.1/mpi/libmpiwrap.c file in lines 281f., 385ff., and 765f. according to the replacements of the deprecated datatypes:

https://www.open-mpi.org/faq/?category=mpi-removed

I filed an attachment for the corresponding file.
Comment 8 Daniel Doe 2020-12-23 10:56:02 UTC
Created attachment 134278 [details]
Avoid usage of deprecated MPI Datatypes

See my comment in the discussion.