ADIOS2 in ECP hardware
ADIOS2 is widely used in ECP (Exascale Computing Project) HPC (high performance computing) systems, some particular ADIOS2 features needs from specifics workarounds to run successfully.
SST MPI Data Transport
MPI Data Transport relies on client-server features of MPI which are currently supported in Cray-MPI implementations with some caveats. Here are some of the observed issues and what its workaround (if any) are:
MPI_Finalize will block the system process in the “Writer/Producer” ADIOS2 instance. The reason is that the Producer ADIOS instance internally calls MPI_Open_port which somehow even after calling MPI_Close_port MPI_Finalize still consider its port to be in used, hence blocking the process. The workaround is to use a MPI_Barrier(MPI_COMM_WORLD) instead of MPI_Finalize() call.
srun does not understand mpmd instructions Simply disable them with the flag -DADIOS2_RUN_MPI_MPMD_TESTS=OFF
Tests timeout Since we launch every tests with srun the scheduling times can exceed the test default timeout. Use a large timeout (5mins) for running your tests.
Examples of launching ADIOS2 SST unit tests using MPI DP:
Alternatively, you can configure your CMake build to use srun directly: