diff options
author | Wei-keng Liao <wkliao@users.noreply.github.com> | 2022-04-15 15:20:23 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-15 15:20:23 (GMT) |
commit | f2a8ac16d7d595dfb83524bbeba2f7f0b8873332 (patch) | |
tree | 6341a603b5589f8b9b70eede56e58380a18b3dfd /testpar | |
parent | 6a4d37f189aa21962cc901592c72c85df4fdc3a2 (diff) | |
download | hdf5-f2a8ac16d7d595dfb83524bbeba2f7f0b8873332.zip hdf5-f2a8ac16d7d595dfb83524bbeba2f7f0b8873332.tar.gz hdf5-f2a8ac16d7d595dfb83524bbeba2f7f0b8873332.tar.bz2 |
free MPI_Group/MPI_Comm/MPI_Datatype objects (#1638)
* free MPI_Group/MPI_Comm/MPI_Datatype objects
* fix clang-format style
Diffstat (limited to 'testpar')
-rw-r--r-- | testpar/t_cache.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/testpar/t_cache.c b/testpar/t_cache.c index 8559afb..d889b3b 100644 --- a/testpar/t_cache.c +++ b/testpar/t_cache.c @@ -325,7 +325,7 @@ struct mssg_t { unsigned magic; }; -MPI_Datatype mpi_mssg_t; /* for MPI derived type created from mssg */ +MPI_Datatype mpi_mssg_t = MPI_DATATYPE_NULL; /* for MPI derived type created from mssg */ /*****************************************************************************/ /************************** function declarations ****************************/ @@ -565,8 +565,8 @@ set_up_file_communicator(void) int mpi_result; int num_excluded_ranks; int excluded_ranks[1]; - MPI_Group file_group; - MPI_Group world_group; + MPI_Group file_group = MPI_GROUP_NULL; + MPI_Group world_group = MPI_GROUP_NULL; if (success) { @@ -674,6 +674,12 @@ set_up_file_communicator(void) } } + if (file_group != MPI_GROUP_NULL) + MPI_Group_free(&file_group); + + if (world_group != MPI_GROUP_NULL) + MPI_Group_free(&world_group); + return (success); } /* set_up_file_communicator() */ @@ -1195,6 +1201,9 @@ takedown_derived_types(void) hbool_t success = TRUE; int result; + if (mpi_mssg_t == MPI_DATATYPE_NULL) + return (success); + result = MPI_Type_free(&mpi_mssg_t); if (result != MPI_SUCCESS) { @@ -7047,6 +7056,10 @@ finish: /* make sure all processes are finished before final report, cleanup * and exit. */ + + if (file_mpi_comm != MPI_COMM_NULL) + MPI_Comm_free(&file_mpi_comm); + MPI_Barrier(MPI_COMM_WORLD); if (MAINPROCESS) { /* only process 0 reports */ HDprintf("===================================\n"); |