Free testcom after finalize.

master
Julian M. Kunkel 2021-01-29 14:00:17 +00:00
parent 351fd4dfb9
commit 7b69fc1500
1 changed files with 17 additions and 13 deletions

View File

@ -80,7 +80,10 @@ static void ior_set_xfer_hints(IOR_param_t * p){
int aiori_warning_as_errors = 0; int aiori_warning_as_errors = 0;
static void test_initialize(IOR_test_t * test){ /*
Returns 1 if the process participates in the test
*/
static int test_initialize(IOR_test_t * test){
int range[3]; int range[3];
IOR_param_t *params = &test->params; IOR_param_t *params = &test->params;
MPI_Group orig_group, new_group; MPI_Group orig_group, new_group;
@ -98,6 +101,13 @@ static void test_initialize(IOR_test_t * test){
MPI_CHECK(MPI_Group_free(&orig_group), "MPI_Group_Free() error"); MPI_CHECK(MPI_Group_free(&orig_group), "MPI_Group_Free() error");
MPI_CHECK(MPI_Group_free(&new_group), "MPI_Group_Free() error"); MPI_CHECK(MPI_Group_free(&new_group), "MPI_Group_Free() error");
if (params->testComm == MPI_COMM_NULL) {
/* tasks not in the group do not participate in this test */
MPI_CHECK(MPI_Barrier(params->mpi_comm_world), "barrier error");
return 0;
}
/* Setup global variables */ /* Setup global variables */
testComm = params->testComm; testComm = params->testComm;
verbose = test->params.verbose; verbose = test->params.verbose;
@ -112,6 +122,7 @@ static void test_initialize(IOR_test_t * test){
if (rank == 0 && verbose >= VERBOSE_0) { if (rank == 0 && verbose >= VERBOSE_0) {
ShowTestStart(& test->params); ShowTestStart(& test->params);
} }
return 1;
} }
static void test_finalize(IOR_test_t * test){ static void test_finalize(IOR_test_t * test){
@ -119,6 +130,7 @@ static void test_finalize(IOR_test_t * test){
if(backend->finalize){ if(backend->finalize){
backend->finalize(test->params.backend_options); backend->finalize(test->params.backend_options);
} }
MPI_CHECK(MPI_Comm_free(& testComm), "MPI_Comm_free() error");
} }
@ -138,7 +150,8 @@ IOR_test_t * ior_run(int argc, char **argv, MPI_Comm world_com, FILE * world_out
/* perform each test */ /* perform each test */
for (tptr = tests_head; tptr != NULL; tptr = tptr->next) { for (tptr = tests_head; tptr != NULL; tptr = tptr->next) {
test_initialize(tptr); int participate = test_initialize(tptr);
if( ! participate ) continue;
totalErrorCount = 0; totalErrorCount = 0;
TestIoSys(tptr); TestIoSys(tptr);
tptr->results->errors = totalErrorCount; tptr->results->errors = totalErrorCount;
@ -184,7 +197,8 @@ int ior_main(int argc, char **argv)
/* perform each test */ /* perform each test */
for (tptr = tests_head; tptr != NULL; tptr = tptr->next) { for (tptr = tests_head; tptr != NULL; tptr = tptr->next) {
test_initialize(tptr); int participate = test_initialize(tptr);
if( ! participate ) continue;
// This is useful for trapping a running MPI process. While // This is useful for trapping a running MPI process. While
// this is sleeping, run the script 'testing/hdfs/gdb.attach' // this is sleeping, run the script 'testing/hdfs/gdb.attach'
@ -1245,11 +1259,6 @@ static void TestIoSys(IOR_test_t *test)
void *hog_buf; void *hog_buf;
IOR_io_buffers ioBuffers; IOR_io_buffers ioBuffers;
if (params->testComm == MPI_COMM_NULL) {
/* tasks not in the group do not participate in this test */
MPI_CHECK(MPI_Barrier(params->mpi_comm_world), "barrier error");
return;
}
if (rank == 0 && verbose >= VERBOSE_1) { if (rank == 0 && verbose >= VERBOSE_1) {
fprintf(out_logfile, "Participating tasks : %d\n", params->numTasks); fprintf(out_logfile, "Participating tasks : %d\n", params->numTasks);
fflush(out_logfile); fflush(out_logfile);
@ -1529,8 +1538,6 @@ static void TestIoSys(IOR_test_t *test)
} }
PrintRepeatEnd(); PrintRepeatEnd();
MPI_CHECK(MPI_Comm_free(&testComm), "MPI_Comm_free() error");
if (params->summary_every_test) { if (params->summary_every_test) {
PrintLongSummaryHeader(); PrintLongSummaryHeader();
PrintLongSummaryOneTest(test); PrintLongSummaryOneTest(test);
@ -1542,9 +1549,6 @@ static void TestIoSys(IOR_test_t *test)
if (hog_buf != NULL) if (hog_buf != NULL)
free(hog_buf); free(hog_buf);
/* Sync with the tasks that did not participate in this test */
MPI_CHECK(MPI_Barrier(params->mpi_comm_world), "barrier error");
} }
/* /*