@@ -467,13 +467,16 @@ void orte_rmaps_base_display_map(orte_job_t *jdata)
467
467
continue ;
468
468
}
469
469
memset (tmp1 , 0 , 1024 );
470
- orte_get_attribute (& proc -> attributes , ORTE_PROC_HWLOC_BOUND , (void * * )& bd , OPAL_PTR );
471
- if (NULL == bd ) {
472
- (void )strncpy (tmp1 , "UNBOUND" , strlen ("UNBOUND" ));
473
- } else {
474
- if (OPAL_ERR_NOT_BOUND == opal_hwloc_base_cset2mapstr (tmp1 , sizeof (tmp1 ), node -> topology -> topo , bd -> cpuset )) {
470
+ if (orte_get_attribute (& proc -> attributes , ORTE_PROC_HWLOC_BOUND , (void * * )& bd , OPAL_PTR )) {
471
+ if (NULL == bd ) {
475
472
(void )strncpy (tmp1 , "UNBOUND" , strlen ("UNBOUND" ));
473
+ } else {
474
+ if (OPAL_ERR_NOT_BOUND == opal_hwloc_base_cset2mapstr (tmp1 , sizeof (tmp1 ), node -> topology -> topo , bd -> cpuset )) {
475
+ (void )strncpy (tmp1 , "UNBOUND" , strlen ("UNBOUND" ));
476
+ }
476
477
}
478
+ } else {
479
+ (void )strncpy (tmp1 , "UNBOUND" , strlen ("UNBOUND" ));
477
480
}
478
481
opal_output (orte_clean_output , "\t\t<process rank=%s app_idx=%ld local_rank=%lu node_rank=%lu binding=%s>" ,
479
482
ORTE_VPID_PRINT (proc -> name .vpid ), (long )proc -> app_idx ,
@@ -488,29 +491,33 @@ void orte_rmaps_base_display_map(orte_job_t *jdata)
488
491
node = (orte_node_t * )opal_pointer_array_get_item (jdata -> map -> nodes , 0 );
489
492
p0 = (orte_proc_t * )opal_pointer_array_get_item (node -> procs , 0 );
490
493
p0bitmap = NULL ;
491
- orte_get_attribute (& p0 -> attributes , ORTE_PROC_CPU_BITMAP , (void * * )& p0bitmap , OPAL_STRING );
492
- opal_output (orte_clean_output , "\t<locality>" );
493
- for (j = 1 ; j < node -> procs -> size ; j ++ ) {
494
- if (NULL == (proc = (orte_proc_t * )opal_pointer_array_get_item (node -> procs , j ))) {
495
- continue ;
494
+ if (orte_get_attribute (& p0 -> attributes , ORTE_PROC_CPU_BITMAP , (void * * )& p0bitmap , OPAL_STRING ) &&
495
+ NULL != p0bitmap ) {
496
+ opal_output (orte_clean_output , "\t<locality>" );
497
+ for (j = 1 ; j < node -> procs -> size ; j ++ ) {
498
+ if (NULL == (proc = (orte_proc_t * )opal_pointer_array_get_item (node -> procs , j ))) {
499
+ continue ;
500
+ }
501
+ procbitmap = NULL ;
502
+ if (orte_get_attribute (& proc -> attributes , ORTE_PROC_CPU_BITMAP , (void * * )& procbitmap , OPAL_STRING ) &&
503
+ NULL != procbitmap ) {
504
+ locality = opal_hwloc_base_get_relative_locality (node -> topology -> topo ,
505
+ p0bitmap ,
506
+ procbitmap );
507
+ opal_output (orte_clean_output , "\t\t<rank=%s rank=%s locality=%s>" ,
508
+ ORTE_VPID_PRINT (p0 -> name .vpid ),
509
+ ORTE_VPID_PRINT (proc -> name .vpid ),
510
+ opal_hwloc_base_print_locality (locality ));
511
+ }
512
+ }
513
+ opal_output (orte_clean_output , "\t</locality>\n</map>" );
514
+ fflush (stderr );
515
+ if (NULL != p0bitmap ) {
516
+ free (p0bitmap );
517
+ }
518
+ if (NULL != procbitmap ) {
519
+ free (procbitmap );
496
520
}
497
- procbitmap = NULL ;
498
- orte_get_attribute (& proc -> attributes , ORTE_PROC_CPU_BITMAP , (void * * )& procbitmap , OPAL_STRING );
499
- locality = opal_hwloc_base_get_relative_locality (node -> topology -> topo ,
500
- p0bitmap ,
501
- procbitmap );
502
- opal_output (orte_clean_output , "\t\t<rank=%s rank=%s locality=%s>" ,
503
- ORTE_VPID_PRINT (p0 -> name .vpid ),
504
- ORTE_VPID_PRINT (proc -> name .vpid ),
505
- opal_hwloc_base_print_locality (locality ));
506
- }
507
- opal_output (orte_clean_output , "\t</locality>\n</map>" );
508
- fflush (stderr );
509
- if (NULL != p0bitmap ) {
510
- free (p0bitmap );
511
- }
512
- if (NULL != procbitmap ) {
513
- free (procbitmap );
514
521
}
515
522
} else {
516
523
opal_output (orte_clean_output , " Data for JOB %s offset %s" , ORTE_JOBID_PRINT (jdata -> jobid ), ORTE_VPID_PRINT (jdata -> offset ));
0 commit comments