Move the allocator initialization from open to init. This clean
a memory leak. Similar changes shuld be applied to all the other PML that are copies of OB1. This patch is related to #4653. This commit was SVN r31838.
Этот коммит содержится в:
родитель
f8e37be1a9
Коммит
685f051557
@ -217,25 +217,9 @@ static int mca_pml_ob1_component_register(void)
|
|||||||
|
|
||||||
static int mca_pml_ob1_component_open(void)
|
static int mca_pml_ob1_component_open(void)
|
||||||
{
|
{
|
||||||
mca_allocator_base_component_t* allocator_component;
|
|
||||||
|
|
||||||
mca_pml_ob1_output = opal_output_open(NULL);
|
mca_pml_ob1_output = opal_output_open(NULL);
|
||||||
opal_output_set_verbosity(mca_pml_ob1_output, mca_pml_ob1_verbose);
|
opal_output_set_verbosity(mca_pml_ob1_output, mca_pml_ob1_verbose);
|
||||||
|
|
||||||
allocator_component = mca_allocator_component_lookup( mca_pml_ob1.allocator_name );
|
|
||||||
if(NULL == allocator_component) {
|
|
||||||
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);
|
|
||||||
if(NULL == mca_pml_ob1.allocator) {
|
|
||||||
opal_output(0, "mca_pml_ob1_component_open: unable to initialize allocator\n");
|
|
||||||
return OMPI_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
mca_pml_ob1.enabled = false;
|
mca_pml_ob1.enabled = false;
|
||||||
return mca_base_framework_open(&ompi_bml_base_framework, 0);
|
return mca_base_framework_open(&ompi_bml_base_framework, 0);
|
||||||
}
|
}
|
||||||
@ -259,6 +243,8 @@ mca_pml_ob1_component_init( int* priority,
|
|||||||
bool enable_progress_threads,
|
bool enable_progress_threads,
|
||||||
bool enable_mpi_threads )
|
bool enable_mpi_threads )
|
||||||
{
|
{
|
||||||
|
mca_allocator_base_component_t* allocator_component;
|
||||||
|
|
||||||
opal_output_verbose( 10, mca_pml_ob1_output,
|
opal_output_verbose( 10, mca_pml_ob1_output,
|
||||||
"in ob1, my priority is %d\n", mca_pml_ob1.priority);
|
"in ob1, my priority is %d\n", mca_pml_ob1.priority);
|
||||||
|
|
||||||
@ -268,6 +254,20 @@ mca_pml_ob1_component_init( int* priority,
|
|||||||
}
|
}
|
||||||
*priority = mca_pml_ob1.priority;
|
*priority = mca_pml_ob1.priority;
|
||||||
|
|
||||||
|
allocator_component = mca_allocator_component_lookup( mca_pml_ob1.allocator_name );
|
||||||
|
if(NULL == allocator_component) {
|
||||||
|
opal_output(0, "mca_pml_ob1_component_open: can't find allocator: %s\n", mca_pml_ob1.allocator_name);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
mca_pml_ob1.allocator = allocator_component->allocator_init(true,
|
||||||
|
mca_pml_ob1_seg_alloc,
|
||||||
|
mca_pml_ob1_seg_free, NULL);
|
||||||
|
if(NULL == mca_pml_ob1.allocator) {
|
||||||
|
opal_output(0, "mca_pml_ob1_component_open: unable to initialize allocator\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if(OMPI_SUCCESS != mca_bml_base_init( enable_progress_threads,
|
if(OMPI_SUCCESS != mca_bml_base_init( enable_progress_threads,
|
||||||
enable_mpi_threads)) {
|
enable_mpi_threads)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user