@@ -199,13 +199,6 @@ mca_coll_han_comm_query(struct ompi_communicator_t * comm, int *priority)
199
199
ompi_comm_print_cid (comm ), comm -> c_name );
200
200
return NULL ;
201
201
}
202
- if ( !ompi_group_have_remote_peers (comm -> c_local_group ) ) {
203
- /* The group only contains local processes. Disable HAN for now */
204
- opal_output_verbose (10 , ompi_coll_base_framework .framework_output ,
205
- "coll:han:comm_query (%s/%s): comm has only local processes; disqualifying myself" ,
206
- ompi_comm_print_cid (comm ), comm -> c_name );
207
- return NULL ;
208
- }
209
202
/* Get the priority level attached to this module. If priority is less
210
203
* than or equal to 0, then the module is unavailable. */
211
204
* priority = mca_coll_han_component .han_priority ;
@@ -240,6 +233,17 @@ mca_coll_han_comm_query(struct ompi_communicator_t * comm, int *priority)
240
233
}
241
234
}
242
235
236
+ if ( !ompi_group_have_remote_peers (comm -> c_local_group )
237
+ && INTRA_NODE != han_module -> topologic_level ) {
238
+ /* The group only contains local processes, and this is not a
239
+ * intra-node subcomm we created. Disable HAN for now */
240
+ opal_output_verbose (10 , ompi_coll_base_framework .framework_output ,
241
+ "coll:han:comm_query (%s/%s): comm has only local processes; disqualifying myself" ,
242
+ ompi_comm_print_cid (comm ), comm -> c_name );
243
+ OBJ_RELEASE (han_module );
244
+ return NULL ;
245
+ }
246
+
243
247
han_module -> super .coll_module_enable = han_module_enable ;
244
248
han_module -> super .coll_alltoall = NULL ;
245
249
han_module -> super .coll_alltoallv = NULL ;
0 commit comments