Skip to content

Default Open MPI 4.0.0 does not provide functions deprecated in MPI-2.0 #6114

Closed
@bertwesarg

Description

@bertwesarg

Background information

What version of Open MPI are you using? (e.g., v1.10.3, v2.1.0, git branch name and hash, etc.)

Open MPI 4.0.0

Describe how Open MPI was installed (e.g., from a source/distribution tarball, from a git clone, from an operating system distribution package, etc.)

$ tar xf openmpi-4.0.0.tar.bz2
$ cd openmpi-4.0.0
$ mkdir _build
$ cd _build
$ ../configure --prefix=…

Please describe the system on which you are running

  • Operating system/version: Ubuntu 18.04..1
  • Computer hardware: ThinkPad X480s
  • Network type: N.A

Details of the problem

libmpi.so.40.20.0 misses the following symbols, which are deprecated in MPI-2.0 (see Chapter 15, page 599 pp.)

  • MPI_Keyval_create
  • MPI_Keyval_free
  • MPI_Attr_put
  • MPI_Attr_get
  • MPI_Attr_delete
$ nm ./ompi/.libs/libmpi.so.40.20.0 | grep '\(MPI_Keyval_create\|MPI_Keyval_free\|MPI_Attr_put\|MPI_Attr_get\|MPI_Attr_delete\)'
$

The worst part is, that there are prototypes in mpi.h:

cat >declcheck-depr-mpi-2.0.c <<EOF
#include <mpi.h>

void test()
{
    int ret = MPI_Keyval_create(NULL, NULL, NULL, NULL);
    ret = MPI_Keyval_free(NULL);
    ret = MPI_Attr_put(MPI_COMM_WORLD, 0, NULL);
    ret = MPI_Attr_get(MPI_COMM_WORLD, 0, NULL, NULL);
    ret = MPI_Attr_delete(MPI_COMM_WORLD, 0);
}
EOF
$ gcc -Iompi/include -c declcheck-depr-mpi-2.0.c

declcheck-depr-mpi-2.0.c: In function ‘test’:
declcheck-depr-mpi-2.0.c:5:5: warning: ‘MPI_Keyval_create’ is deprecated: MPI_Keyval_create was deprecated in MPI-2.0; use MPI_Comm_create_keyval instead. [-Wdeprecated-declarations]
     int ret = MPI_Keyval_create(NULL, NULL, NULL, NULL);
     ^~~
In file included from declcheck-depr-mpi-2.0.c:1:0:
ompi/include/mpi.h:2625:20: note: declared here
 OMPI_DECLSPEC  int MPI_Keyval_create(MPI_Copy_function *copy_fn,
                    ^~~~~~~~~~~~~~~~~
declcheck-depr-mpi-2.0.c:6:5: warning: ‘MPI_Keyval_free’ is deprecated: MPI_Keyval_free was deprecated in MPI-2.0; MPI_Comm_free_keyval instead. [-Wdeprecated-declarations]
     ret = MPI_Keyval_free(NULL);
     ^~~
In file included from declcheck-depr-mpi-2.0.c:1:0:
ompi/include/mpi.h:2633:20: note: declared here
 OMPI_DECLSPEC  int MPI_Keyval_free(int *keyval)
                    ^~~~~~~~~~~~~~~
declcheck-depr-mpi-2.0.c:7:5: warning: ‘MPI_Attr_put’ is deprecated: MPI_Attr_put was deprecated in MPI-2.0; use MPI_Comm_set_attr instead [-Wdeprecated-declarations]
     ret = MPI_Attr_put(MPI_COMM_WORLD, 0, NULL);
     ^~~
In file included from declcheck-depr-mpi-2.0.c:1:0:
ompi/include/mpi.h:2609:20: note: declared here
 OMPI_DECLSPEC  int MPI_Attr_put(MPI_Comm comm, int keyval, void *attribute_val)
                    ^~~~~~~~~~~~
declcheck-depr-mpi-2.0.c:8:5: warning: ‘MPI_Attr_get’ is deprecated: MPI_Attr_get was deprecated in MPI-2.0; use MPI_Comm_get_attr instead [-Wdeprecated-declarations]
     ret = MPI_Attr_get(MPI_COMM_WORLD, 0, NULL, NULL);
     ^~~
In file included from declcheck-depr-mpi-2.0.c:1:0:
ompi/include/mpi.h:2605:20: note: declared here
 OMPI_DECLSPEC  int MPI_Attr_get(MPI_Comm comm, int keyval, void *attribute_val, int *flag)
                    ^~~~~~~~~~~~
declcheck-depr-mpi-2.0.c:9:5: warning: ‘MPI_Attr_delete’ is deprecated: MPI_Attr_delete was deprecated in MPI-2.0; use MPI_Comm_delete_attr instead [-Wdeprecated-declarations]
     ret = MPI_Attr_delete(MPI_COMM_WORLD, 0);
     ^~~
In file included from declcheck-depr-mpi-2.0.c:1:0:
ompi/include/mpi.h:2601:20: note: declared here
 OMPI_DECLSPEC  int MPI_Attr_delete(MPI_Comm comm, int keyval)
                    ^~~~~~~~~~~~~~~

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions