ompi_comm_all allocate memory and retain the objects. Therefore, after
each call to ompi_comm_all we should parse the communicator list and release the objects ... This commit was SVN r20525.
Этот коммит содержится в:
родитель
84d3ca0c9e
Коммит
4747a4bb53
@ -1,8 +1,9 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; -*- */
|
||||
/*
|
||||
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2004-2008 The University of Tennessee and The University
|
||||
* Copyright (c) 2004-2009 The University of Tennessee and The University
|
||||
* of Tennessee Research Foundation. All rights
|
||||
* reserved.
|
||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||
@ -620,11 +621,16 @@ int mca_bml_r2_finalize( void )
|
||||
bml_r2_remove_btl_progress(btl);
|
||||
|
||||
/* dont use this btl for any peers */
|
||||
for(p=0; p<num_procs; p++) {
|
||||
for( p = 0; p < num_procs; p++ ) {
|
||||
ompi_proc_t* proc = procs[p];
|
||||
mca_bml_r2_del_proc_btl(proc, sm->btl_module);
|
||||
}
|
||||
}
|
||||
/* Release the procs as the ompi_proc_all increase their ref_count */
|
||||
for( p = 0; p < num_procs; p++ ) {
|
||||
OBJ_RELEASE(procs[p]);
|
||||
}
|
||||
free(procs);
|
||||
|
||||
CLEANUP:
|
||||
mca_bml_r2.num_btl_modules = 0;
|
||||
@ -658,15 +664,15 @@ static int mca_bml_r2_del_btl(mca_btl_base_module_t* btl)
|
||||
mca_btl_base_module_t** modules;
|
||||
bool found = false;
|
||||
|
||||
if(opal_list_get_size(&mca_btl_base_modules_initialized) == 2) {
|
||||
opal_output(0, "only one BTL left, can't failover");
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
||||
procs = ompi_proc_all(&num_procs);
|
||||
if(NULL == procs)
|
||||
return OMPI_SUCCESS;
|
||||
|
||||
if(opal_list_get_size(&mca_btl_base_modules_initialized) == 2) {
|
||||
opal_output(0, "only one BTL left, can't failover");
|
||||
goto CLEANUP;
|
||||
}
|
||||
|
||||
/* Get rid of the associated progress function */
|
||||
bml_r2_remove_btl_progress(btl);
|
||||
|
||||
@ -706,6 +712,10 @@ static int mca_bml_r2_del_btl(mca_btl_base_module_t* btl)
|
||||
/* cleanup */
|
||||
btl->btl_finalize(btl);
|
||||
CLEANUP:
|
||||
/* Decrease the ref_count increased by the call to ompi_proc_all */
|
||||
for( p = 0; p < num_procs; p++ ) {
|
||||
OBJ_RELEASE(procs[p]);
|
||||
}
|
||||
free(procs);
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; -*- */
|
||||
/*
|
||||
* Copyright (c) 2004-2008 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2004-2008 The University of Tennessee and The University
|
||||
* Copyright (c) 2004-2009 The University of Tennessee and The University
|
||||
* of Tennessee Research Foundation. All rights
|
||||
* reserved.
|
||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||
@ -76,7 +77,9 @@ void mca_pml_ob1_error_handler( struct mca_btl_base_module_t* btl,
|
||||
|
||||
int mca_pml_ob1_enable(bool enable)
|
||||
{
|
||||
if( false == enable ) return OMPI_SUCCESS;
|
||||
if( false == enable ) {
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
||||
OBJ_CONSTRUCT(&mca_pml_ob1.lock, opal_mutex_t);
|
||||
|
||||
@ -600,6 +603,9 @@ int mca_pml_ob1_ft_event( int state )
|
||||
opal_output(0,
|
||||
"pml:ob1: ft_event(Restart): proc_refresh Failed %d",
|
||||
ret);
|
||||
for(p = 0; p < (int)num_procs; ++p) {
|
||||
OBJ_RELEASE(procs[p]);
|
||||
}
|
||||
free (procs);
|
||||
return ret;
|
||||
}
|
||||
@ -636,6 +642,9 @@ int mca_pml_ob1_ft_event( int state )
|
||||
opal_output(0,
|
||||
"pml:ob1: ft_event(Restart): proc_refresh Failed %d",
|
||||
ret);
|
||||
for(p = 0; p < (int)num_procs; ++p) {
|
||||
OBJ_RELEASE(procs[p]);
|
||||
}
|
||||
free (procs);
|
||||
return ret;
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; -*- */
|
||||
/*
|
||||
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2004-2007 The University of Tennessee and The University
|
||||
* Copyright (c) 2004-2009 The University of Tennessee and The University
|
||||
* of Tennessee Research Foundation. All rights
|
||||
* reserved.
|
||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||
@ -127,6 +128,7 @@ static int mca_pml_ob1_component_open(void)
|
||||
opal_output(0, "mca_pml_ob1_component_open: can't find allocator: %s\n", mca_pml_ob1.allocator_name);
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
|
||||
mca_pml_ob1.allocator = allocator_component->allocator_init(true,
|
||||
mca_pml_ob1_seg_alloc,
|
||||
mca_pml_ob1_seg_free, NULL);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user