@@ -41,13 +41,20 @@ struct mca_monitoring_coll_data_t {
41
41
/* Collectives operation monitoring */
42
42
static opal_hash_table_t * comm_data = NULL ;
43
43
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 )
45
45
{
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 ;
50
51
}
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 ;
51
58
if ( -1 == data -> world_rank ) {
52
59
/* Get current process world_rank */
53
60
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)
160
167
"O2A\t%" PRId32 "\t%zu bytes\t%zu msgs sent\n"
161
168
"A2O\t%" PRId32 "\t%zu bytes\t%zu msgs sent\n"
162
169
"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 ,
166
172
data -> world_rank , data -> o2a_size , data -> o2a_count ,
167
173
data -> world_rank , data -> a2o_size , data -> a2o_count ,
168
174
data -> world_rank , data -> a2a_size , data -> a2a_count );
0 commit comments