Add netpatterns_cleanup_narray_knomial_tree function to cleanup after
netpatterns_setup_narray_knomial_tree. Fix a bug in ptpcoll that caused memory allocated by netpatterns_setup_narray_knomial_tree to leak. cmr=v1.8.2:reviewer=manjugv This commit was SVN r31781.
Этот коммит содержится в:
родитель
d3dc2c9b0b
Коммит
55f0dcb81a
@ -173,7 +173,11 @@ mca_bcol_ptpcoll_module_destruct(mca_bcol_ptpcoll_module_t *ptpcoll_module)
|
||||
free(ptpcoll_module->narray_knomial_proxy_extra_index);
|
||||
ptpcoll_module->narray_knomial_proxy_extra_index = NULL;
|
||||
}
|
||||
|
||||
if (NULL != ptpcoll_module->narray_knomial_node) {
|
||||
for(i = 0; i < ptpcoll_module->full_narray_tree_size; i++) {
|
||||
netpatterns_cleanup_narray_knomial_tree (ptpcoll_module->narray_knomial_node + i);
|
||||
}
|
||||
free(ptpcoll_module->narray_knomial_node);
|
||||
ptpcoll_module->narray_knomial_node = NULL;
|
||||
}
|
||||
|
@ -129,6 +129,8 @@ OMPI_DECLSPEC int netpatterns_setup_narray_tree(int tree_order, int my_rank, int
|
||||
/* setup an n-array tree with k-nomial levels */
|
||||
OMPI_DECLSPEC int netpatterns_setup_narray_knomial_tree( int tree_order, int my_rank, int num_nodes,
|
||||
netpatterns_narray_knomial_tree_node_t *my_node);
|
||||
/* cleanup an n-array tree setup by the above function */
|
||||
OMPI_DECLSPEC void netpatterns_cleanup_narray_knomial_tree (netpatterns_narray_knomial_tree_node_t *my_node);
|
||||
|
||||
/* setup an multi-nomial tree - for each node in the tree
|
||||
* this returns it's parent, and it's children
|
||||
|
@ -1,8 +1,11 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
||||
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. 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
|
||||
@ -528,7 +531,6 @@ OMPI_DECLSPEC void netpatterns_cleanup_recursive_knomial_allgather_tree_node(
|
||||
free(exchange_node->payload_info);
|
||||
}
|
||||
|
||||
|
||||
OMPI_DECLSPEC int netpatterns_setup_recursive_knomial_tree_node(
|
||||
int num_nodes, int node_rank, int tree_order,
|
||||
netpatterns_k_exchange_node_t *exchange_node)
|
||||
@ -667,18 +669,7 @@ OMPI_DECLSPEC int netpatterns_setup_recursive_knomial_tree_node(
|
||||
|
||||
Error:
|
||||
|
||||
if (NULL != exchange_node->rank_extra_sources_array) {
|
||||
free(exchange_node->rank_extra_sources_array);
|
||||
}
|
||||
|
||||
if (NULL != exchange_node->rank_exchanges) {
|
||||
for (i = 0; i < exchange_node->n_exchanges; i++) {
|
||||
if (NULL != exchange_node->rank_exchanges[i]) {
|
||||
free(exchange_node->rank_exchanges[i]);
|
||||
}
|
||||
}
|
||||
free(exchange_node->rank_exchanges);
|
||||
}
|
||||
netpatterns_cleanup_recursive_knomial_tree_node (exchange_node);
|
||||
|
||||
/* error return */
|
||||
return OMPI_ERROR;
|
||||
|
@ -1,6 +1,9 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
||||
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
|
||||
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -156,6 +159,18 @@ Error:
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
|
||||
void netpatterns_cleanup_narray_knomial_tree (netpatterns_narray_knomial_tree_node_t *my_node)
|
||||
{
|
||||
if (my_node->children_ranks) {
|
||||
free (my_node->children_ranks);
|
||||
my_node->children_ranks = NULL;
|
||||
}
|
||||
|
||||
if (0 != my_node->my_rank) {
|
||||
netpatterns_cleanup_recursive_knomial_tree_node (&my_node->k_node);
|
||||
}
|
||||
}
|
||||
|
||||
int netpatterns_setup_narray_knomial_tree(
|
||||
int tree_order, int my_rank, int num_nodes,
|
||||
netpatterns_narray_knomial_tree_node_t *my_node)
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user