'ompi_mpi_lb' is deprecated: MPI_LB is deprecated in MPI-2.0

Issue #159 resolved
Axel Huebl created an issue

I am compiling mpi4py with AppleClang 11.0.3 and OpenMPI 3.1.5

In step

mpicc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I[...]/include/python3.7m -c _configtest.c -o _configtest.o

The following warning is raised:

warning: 'ompi_mpi_lb' is deprecated: MPI_LB is deprecated in MPI-2.0 [-Wdeprecated-declarations]
  MPI_Datatype s; s = MPI_LB; (void)s;

OpenMPI 4.0 is removing a lot of deprecated MPI functionality by default, unless the backwards compatibility layer (non-default) is enabled.

Comments (4)

  1. Lisandro Dalcin

    I was bitten by this mess long time ago. That’s because you are compiling with Open MPI 3.x, and MPI_LB/UBare still available, this is checked at build time in mpi4py's setup.py. Trust me, I’m doing the right thing here. Don’t you remember that we ship Open MPI 4 in conda-forge, and mpi4py builds just fine with no additional patches?

  2. Axel Huebl reporter

    Yep, saw this with OpenMPI 3 in Spack: https://github.com/spack/spack/ and was bitten during an early OpenMPI 4.0 migration a few months back. OpenMPI 4 really removes those deprecated symbols, unless build with explicit, non-default backwards compatibility flags.

  3. Axel Huebl reporter

    see your check

            for symbol, stype in (
                ('MPI_LB', 'MPI_Datatype'),
                ('MPI_UB', 'MPI_Datatype'),
                ):
    

    in setup.py now, thx! Looks good, just wanted to make sure you are aware of it.

  4. Log in to comment