1
1
There were a couple of issues with the memory leak fixes and several more verbose
issues. This fixes those issues.

cmr=v1.8.1:ticket=trac:4473

This commit was SVN r31273.

The following Trac tickets were found above:
  Ticket 4473 --> https://svn.open-mpi.org/trac/ompi/ticket/4473
Этот коммит содержится в:
Nathan Hjelm 2014-03-28 18:31:28 +00:00
родитель efa37c17c8
Коммит a9fb4976d5
6 изменённых файлов: 71 добавлений и 51 удалений

Просмотреть файл

@ -44,7 +44,7 @@ mca_bcol_base_memory_block_desc_t *mca_coll_ml_allocate_block(struct mca_coll_ml
memory_block->size_block = memory_manager->list_block_size;
if (!memory_block->block){
ML_ERROR(("lmngr failed."));
ML_VERBOSE(1, ("lmngr failed."));
ret = NULL;
goto exit_ERROR;
}

Просмотреть файл

@ -2,7 +2,7 @@
/*
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* Copyright (c) 2013-2014 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
@ -197,7 +197,7 @@ int ml_coll_hier_allgather_setup(mca_coll_ml_module_t *ml_module)
void ml_coll_hier_allgather_cleanup(mca_coll_ml_module_t *ml_module)
{
/* Hierarchy Setup */
int ret, topo_index, alg;
int topo_index, alg;
mca_coll_ml_topology_t *topo_info = ml_module->topo_list;
alg = mca_coll_ml_component.coll_config[ML_ALLGATHER][ML_SMALL_MSG].algorithm_id;
@ -208,10 +208,19 @@ void ml_coll_hier_allgather_cleanup(mca_coll_ml_module_t *ml_module)
return;
}
free(ml_module->coll_ml_allgather_functions[alg]->component_functions);
ml_module->coll_ml_allgather_functions[alg]->component_functions = NULL;
free(ml_module->coll_ml_allgather_functions[alg]);
ml_module->coll_ml_allgather_functions[alg] = NULL;
if (NULL == ml_module->coll_ml_allgather_functions[alg]) {
return;
}
if (ml_module->coll_ml_allgather_functions[alg]->component_functions) {
free(ml_module->coll_ml_allgather_functions[alg]->component_functions);
ml_module->coll_ml_allgather_functions[alg]->component_functions = NULL;
}
if (ml_module->coll_ml_allgather_functions[alg]) {
free(ml_module->coll_ml_allgather_functions[alg]);
ml_module->coll_ml_allgather_functions[alg] = NULL;
}
alg = mca_coll_ml_component.coll_config[ML_ALLGATHER][ML_LARGE_MSG].algorithm_id;
topo_index = ml_module->collectives_topology_map[ML_ALLGATHER][alg];
@ -221,8 +230,13 @@ void ml_coll_hier_allgather_cleanup(mca_coll_ml_module_t *ml_module)
return;
}
free(ml_module->coll_ml_allgather_functions[alg]->component_functions);
ml_module->coll_ml_allgather_functions[alg]->component_functions = NULL;
free(ml_module->coll_ml_allgather_functions[alg]);
ml_module->coll_ml_allgather_functions[alg] = NULL;
if (ml_module->coll_ml_allgather_functions[alg]->component_functions) {
free(ml_module->coll_ml_allgather_functions[alg]->component_functions);
ml_module->coll_ml_allgather_functions[alg]->component_functions = NULL;
}
if (ml_module->coll_ml_allgather_functions[alg]) {
free(ml_module->coll_ml_allgather_functions[alg]);
ml_module->coll_ml_allgather_functions[alg] = NULL;
}
}

Просмотреть файл

@ -382,6 +382,10 @@ void ml_coll_hier_allreduce_cleanup_new(mca_coll_ml_module_t *ml_module)
return;
}
if (NULL == ml_module->coll_ml_allreduce_functions[alg]) {
return;
}
free(ml_module->coll_ml_allreduce_functions[alg]->component_functions);
ml_module->coll_ml_allreduce_functions[alg]->component_functions = NULL;
free(ml_module->coll_ml_allreduce_functions[alg]);

Просмотреть файл

@ -1,8 +1,11 @@
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -806,7 +809,7 @@ int ml_coll_hier_bcast_setup(mca_coll_ml_module_t *ml_module)
void ml_coll_hier_bcast_cleanup(mca_coll_ml_module_t *ml_module)
{
/* Hierarchy Setup */
int ret, i , size_code, alg;
int i, alg;
int topo_index = 0;
mca_coll_ml_topology_t *topo_info = ml_module->topo_list;
@ -829,6 +832,10 @@ void ml_coll_hier_bcast_cleanup(mca_coll_ml_module_t *ml_module)
return;
}
if (NULL == ml_module->coll_ml_bcast_functions[alg]) {
continue;
}
switch (alg) {
case ML_BCAST_SMALL_DATA_KNOWN:
case ML_BCAST_LARGE_DATA_KNOWN:
@ -836,10 +843,15 @@ void ml_coll_hier_bcast_cleanup(mca_coll_ml_module_t *ml_module)
case ML_BCAST_LARGE_DATA_UNKNOWN:
case ML_BCAST_SMALL_DATA_SEQUENTIAL:
case ML_BCAST_LARGE_DATA_SEQUENTIAL:
free(ml_module->coll_ml_bcast_functions[alg]->component_functions);
ml_module->coll_ml_bcast_functions[alg]->component_functions = NULL;
free(ml_module->coll_ml_bcast_functions[alg]);
ml_module->coll_ml_bcast_functions[alg] = NULL;
if (ml_module->coll_ml_bcast_functions[alg]->component_functions) {
free(ml_module->coll_ml_bcast_functions[alg]->component_functions);
ml_module->coll_ml_bcast_functions[alg]->component_functions = NULL;
}
if (ml_module->coll_ml_bcast_functions[alg]) {
free(ml_module->coll_ml_bcast_functions[alg]);
ml_module->coll_ml_bcast_functions[alg] = NULL;
}
break;
default:
topo_info->hierarchical_algorithms[ML_BCAST] = NULL;

Просмотреть файл

@ -331,16 +331,29 @@ void ml_coll_hier_reduce_cleanup(mca_coll_ml_module_t *ml_module)
return;
}
for (i=0; i<ml_module->topo_list[topo_index].n_levels; i++) {
free(ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr[i]);
ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr[i] = NULL;
if (NULL == ml_module->coll_ml_reduce_functions[alg]) {
return;
}
free(ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr);
ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr = NULL;
for (i=0; i<ml_module->topo_list[topo_index].n_levels; i++) {
if (ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr[i]) {
free(ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr[i]);
ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr[i] = NULL;
}
}
free(ml_module->coll_ml_reduce_functions[alg]->component_functions);
ml_module->coll_ml_reduce_functions[alg]->component_functions = NULL;
free(ml_module->coll_ml_reduce_functions[alg]);
ml_module->coll_ml_reduce_functions[alg] = NULL;
if (ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr) {
free(ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr);
ml_module->coll_ml_reduce_functions[alg]->comp_fn_arr = NULL;
}
if (ml_module->coll_ml_reduce_functions[alg]->component_functions) {
free(ml_module->coll_ml_reduce_functions[alg]->component_functions);
ml_module->coll_ml_reduce_functions[alg]->component_functions = NULL;
}
if (ml_module->coll_ml_reduce_functions[alg]) {
free(ml_module->coll_ml_reduce_functions[alg]);
ml_module->coll_ml_reduce_functions[alg] = NULL;
}
}

Просмотреть файл

@ -92,20 +92,11 @@ mca_coll_ml_module_construct(mca_coll_ml_module_t *module)
int index_topo, coll_i, st_i;
mca_coll_ml_topology_t *topo;
module->max_fn_calls = 0;
module->initialized = false;
module->comm = NULL;
module->collective_sequence_num = 0;
module->no_data_collective_sequence_num = 0;
module->payload_block = NULL;
module->reference_convertor = NULL;
memset ((char *) module + sizeof (module->super), 0, sizeof (*module) - sizeof (module->super));
/* It's critical to reset data_offset to zero */
module->data_offset = -1;
module->coll_ml_barrier_function = NULL;
/* If the topology support zero level and no fragmentation was requested */
for (index_topo = 0; index_topo < COLL_ML_TOPO_MAX; index_topo++) {
topo = &module->topo_list[index_topo];
@ -113,22 +104,8 @@ mca_coll_ml_module_construct(mca_coll_ml_module_t *module)
topo->global_highest_hier_group_index = -1;
topo->number_of_all_subgroups = -1;
topo->n_levels = -1;
topo->sort_list = NULL;
topo->hier_layout_info = NULL;
topo->all_bcols_mode = ~(0); /* set to all bits */
topo->route_vector = NULL;
topo->array_of_all_subgroups = NULL;
topo->component_pairs = NULL;
topo->hier_layout_info = NULL;
topo->status = COLL_ML_TOPO_DISABLED; /* all topologies are not used by default */
/* Init ordering info */
topo->topo_ordering_info.next_inorder = 0;
topo->topo_ordering_info.next_order_num = 0;
topo->topo_ordering_info.num_bcols_need_ordering = 0;
memset(topo->hierarchical_algorithms, 0,
BCOL_NUM_OF_FUNCTIONS * sizeof(coll_ml_collective_description_t *));
}
for (coll_i = 0; coll_i < ML_NUM_OF_FUNCTIONS; coll_i++) {
@ -161,7 +138,7 @@ mca_coll_ml_module_construct(mca_coll_ml_module_t *module)
static void
mca_coll_ml_module_destruct(mca_coll_ml_module_t *module)
{
int i, j, k,fnc, index_topo, alg;
int i, j, k,fnc, index_topo;
mca_coll_ml_topology_t *topo;
ML_VERBOSE(4, ("ML module destruct"));
@ -557,7 +534,7 @@ static int ml_module_memory_initialization(mca_coll_ml_module_t *ml_module)
ml_module->payload_block = mca_coll_ml_allocate_block(cs,ml_module->payload_block);
if (NULL == ml_module->payload_block) {
ML_ERROR(("mca_coll_ml_allocate_block exited with error."));
ML_VERBOSE(1, ("mca_coll_ml_allocate_block exited with error."));
return OMPI_ERROR;
}