Closed
Description
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)
^~~~~~~~~~~~~~~