File tree Expand file tree Collapse file tree 1 file changed +12
-2
lines changed
Expand file tree Collapse file tree 1 file changed +12
-2
lines changed Original file line number Diff line number Diff line change @@ -602,7 +602,17 @@ static void cpuAffinityRecvHandler(void *msg)
602602 if (m -> node_hosts [i ] == myhost )
603603 ++ nodes_on_host ;
604604
605- const int package_count = cmi_hwloc_get_nbobjs_by_type (topology , HWLOC_OBJ_PACKAGE );
605+ // Filter out packages with null cpusets, caused by system resource management
606+ const int total_package_count = cmi_hwloc_get_nbobjs_by_type (topology , HWLOC_OBJ_PACKAGE );
607+ std ::vector < hwloc_obj_t > packages ;
608+ packages .reserve (total_package_count );
609+ for (int i = 0 ; i < total_package_count ; ++ i )
610+ {
611+ hwloc_obj_t obj = cmi_hwloc_get_obj_by_type (topology , HWLOC_OBJ_PACKAGE , i );
612+ if (cmi_hwloc_get_nbobjs_inside_cpuset_by_type (topology , obj -> cpuset , HWLOC_OBJ_PU ) > 0 )
613+ packages .emplace_back (obj );
614+ }
615+ const int package_count = packages .size ();
606616
607617 hwloc_obj_t obj ;
608618 int numranks , myrank ;
@@ -627,7 +637,7 @@ static void cpuAffinityRecvHandler(void *msg)
627637 }
628638 }
629639
630- obj = cmi_hwloc_get_obj_by_type ( topology , HWLOC_OBJ_PACKAGE , mypackage ) ;
640+ obj = packages [ mypackage ] ;
631641 numranks = pes_on_package ;
632642 myrank = my_first_pe_rank_on_package + CmiMyRank ();
633643
You can’t perform that action at this time.
0 commit comments