Just because I didn't find it in the docs: what's the minimum MPI standard/API interface you expect? MPI 2.3+?
I was recently installing against OpenMPI 1.6.5 on a legacy CI script (MPI 2.1 on Ubuntu "Trusty") and just saw it didn't pass
adios2/engine/insitumpi/InSituMPIReader.cpp:456:9:
error: no matching function for call to 'MPI_Isend'
note: candidate function not viable: no known conversion from 'const char *' to 'void *' for 1st argument OMPI_DECLSPEC int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, ...
Of course, there is no reason to support such ancient MPI's but we might want to document and enforce this check within CMake.
Hi @ax3l thanks for the suggestion. This is related to #1354 and a bug in older MPI implementations (Ubuntu 14) not meeting the standard. Let us find out more how far back this goes and agree on how to proceed. Thanks!
@ax3l
v1.7 should be the minimum:
const void* : https://www.open-mpi.org/doc/v1.7/man3/MPI_Isend.3.php
void* : https://www.open-mpi.org/doc/v1.6/man3/MPI_Isend.3.php
Will take a look if cmake can do this check as you suggested. Thanks!
Otherwise there is a public C define in mpi.h which one can check, maybe as a cmake test.