-
Notifications
You must be signed in to change notification settings - Fork 42
Open
Description
With the following minimal example, I can confirm that with preloaded the libmpitrace.so, the PMPI_Finalize() is not called with MPI_Finalize() in code.
#include"mpi.h"
#include<stdio.h>
int main(int argc, char *argv[])
{
int ret= MPI_Init(&argc, &argv);
int rank= -1;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
ret= MPI_Finalize();
{
int initialised= -1, finalised= -1;
MPI_Initialized(&initialised);
MPI_Finalized(&finalised);
printf("%d: initialised= %d, finalised= %d\n", rank, initialised, finalised);
fflush(stdout);
}
return ret;
}
$ mpicc -O3 simple.c
$ mpirun -n 2 ./a.out
0: initialised= 1, finalised= 1
1: initialised= 1, finalised= 1
$ mpirun -n 2 env EXTRAE_CONFIG_FILE=./extrae.xml LD_PRELOAD=${EXTRAE_ROOT}/lib/libmpitrace.so ./a.out
1: initialised= 1, finalised= 0
0: initialised= 1, finalised= 0
This is because of the check at src/tracer/wrappers/MPI/mpi_wrapper.c:2287 which will never be fulfilled when preloading.
This causes unexpected SIGTERM when exiting larger jobs.
Is this intended?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels