@@ -764,7 +764,7 @@ int ompi_rte_init(int *pargc, char ***pargv)
764764
765765 /* identify our location */
766766 val = NULL ;
767- OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_LOCALITY_STRING ,
767+ OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_CPUSET ,
768768 & opal_process_info .my_name , & val , PMIX_STRING );
769769 if (PMIX_SUCCESS == rc && NULL != val ) {
770770 opal_process_info .cpuset = val ;
@@ -774,6 +774,15 @@ int ompi_rte_init(int *pargc, char ***pargv)
774774 opal_process_info .cpuset = NULL ;
775775 opal_process_info .proc_is_bound = false;
776776 }
777+ val = NULL ;
778+ OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_LOCALITY_STRING ,
779+ & opal_process_info .my_name , & val , PMIX_STRING );
780+ if (PMIX_SUCCESS == rc && NULL != val ) {
781+ opal_process_info .locality = val ;
782+ val = NULL ; // protect the string
783+ } else {
784+ opal_process_info .locality = NULL ;
785+ }
777786
778787 /* retrieve the local peers - defaults to local node */
779788 val = NULL ;
@@ -811,7 +820,7 @@ int ompi_rte_init(int *pargc, char ***pargv)
811820 OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_LOCALITY_STRING ,
812821 & pname , & val , PMIX_STRING );
813822 if (PMIX_SUCCESS == rc && NULL != val ) {
814- u16 = opal_hwloc_compute_relative_locality (opal_process_info .cpuset , val );
823+ u16 = opal_hwloc_compute_relative_locality (opal_process_info .locality , val );
815824 free (val );
816825 } else {
817826 /* all we can say is that it shares our node */
@@ -826,9 +835,6 @@ int ompi_rte_init(int *pargc, char ***pargv)
826835 ret = opal_pmix_convert_status (rc );
827836 error = "local store of locality" ;
828837 opal_argv_free (peers );
829- if (NULL != opal_process_info .cpuset ) {
830- free (opal_process_info .cpuset );
831- }
832838 goto error ;
833839 }
834840 }
0 commit comments