Skip to content

Commit f334607

Browse files
clementFoyerbosilca
authored andcommitted
Simplify the communicator's name caching management (#6)
Signed-off-by: Clement Foyer <[email protected]>
1 parent a680b3a commit f334607

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

ompi/mca/common/monitoring/common_monitoring.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ typedef struct mca_monitoring_coll_data_t mca_monitoring_coll_data_t;
110110
OMPI_DECLSPEC OBJ_CLASS_DECLARATION(mca_monitoring_coll_data_t);
111111

112112
OMPI_DECLSPEC mca_monitoring_coll_data_t*mca_common_monitoring_coll_new(ompi_communicator_t*comm);
113+
OMPI_DECLSPEC int mca_common_monitoring_coll_cache_name(ompi_communicator_t*comm);
113114
OMPI_DECLSPEC void mca_common_monitoring_coll_release(mca_monitoring_coll_data_t*data);
114115
OMPI_DECLSPEC void mca_common_monitoring_coll_o2a(size_t size, mca_monitoring_coll_data_t*data);
115116
OMPI_DECLSPEC void mca_common_monitoring_coll_a2o(size_t size, mca_monitoring_coll_data_t*data);

ompi/mca/common/monitoring/common_monitoring_coll.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,20 @@ struct mca_monitoring_coll_data_t {
4141
/* Collectives operation monitoring */
4242
static opal_hash_table_t *comm_data = NULL;
4343

44-
static inline void mca_common_monitoring_coll_cache(mca_monitoring_coll_data_t*data)
44+
int mca_common_monitoring_coll_cache_name(ompi_communicator_t*comm)
4545
{
46-
if( data->is_released ) {
47-
/* As long as the data struct is not released, we still have the communicator to
48-
immediately fetch the communicator's name */
49-
data->comm_name = strdup(data->p_comm->c_name);
46+
mca_monitoring_coll_data_t*data;
47+
int ret = opal_hash_table_get_value_uint64(comm_data, *((uint64_t*)&comm), (void*)&data);
48+
if( OPAL_SUCCESS == ret ) {
49+
data->comm_name = strdup(comm->c_name);
50+
data->p_comm = NULL;
5051
}
52+
return ret;
53+
}
54+
55+
static inline void mca_common_monitoring_coll_cache(mca_monitoring_coll_data_t*data)
56+
{
57+
int world_rank;
5158
if( -1 == data->world_rank ) {
5259
/* Get current process world_rank */
5360
mca_common_monitoring_get_world_rank(ompi_comm_rank(data->p_comm), data->p_comm,
@@ -160,9 +167,8 @@ void mca_common_monitoring_coll_flush(FILE *pf, mca_monitoring_coll_data_t*data)
160167
"O2A\t%" PRId32 "\t%zu bytes\t%zu msgs sent\n"
161168
"A2O\t%" PRId32 "\t%zu bytes\t%zu msgs sent\n"
162169
"A2A\t%" PRId32 "\t%zu bytes\t%zu msgs sent\n",
163-
data->p_comm ? data->p_comm->c_name
164-
: data->comm_name ? data->comm_name : "(no-name)",
165-
data->procs,
170+
data->comm_name ? data->comm_name : data->p_comm ?
171+
data->p_comm->c_name : "(no-name)", data->procs,
166172
data->world_rank, data->o2a_size, data->o2a_count,
167173
data->world_rank, data->a2o_size, data->a2o_count,
168174
data->world_rank, data->a2a_size, data->a2a_count);

ompi/mca/pml/monitoring/pml_monitoring_comm.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ int mca_pml_monitoring_add_comm(struct ompi_communicator_t* comm)
2020

2121
int mca_pml_monitoring_del_comm(struct ompi_communicator_t* comm)
2222
{
23+
mca_common_monitoring_coll_cache_name(comm);
2324
return pml_selected_module.pml_del_comm(comm);
2425
}

0 commit comments

Comments
 (0)