|
38 | 38 | #include "opal/util/show_help.h"
|
39 | 39 | #include "opal/mca/hwloc/base/base.h"
|
40 | 40 | #include "opal/mca/pmix/pmix.h"
|
| 41 | +#include "opal/util/argv.h" |
41 | 42 |
|
42 | 43 | #include "ompi/proc/proc.h"
|
43 | 44 | #include "ompi/datatype/ompi_datatype.h"
|
@@ -343,28 +344,23 @@ int ompi_proc_complete_init(void)
|
343 | 344 | opal_mutex_unlock (&ompi_proc_lock);
|
344 | 345 |
|
345 | 346 | if (ompi_process_info.num_procs >= ompi_add_procs_cutoff) {
|
346 |
| - uint16_t u16, *u16ptr; |
347 |
| - |
348 |
| - /* find and add all local processes */ |
349 |
| - for (ompi_vpid_t i = 0 ; i < ompi_process_info.num_procs ; ++i ) { |
350 |
| - opal_process_name_t proc_name = {.vpid = i, .jobid = OMPI_PROC_MY_NAME->jobid}; |
351 |
| - uint16_t locality = OPAL_PROC_NON_LOCAL; |
352 |
| - |
353 |
| - if (OMPI_PROC_MY_NAME->vpid == i) { |
354 |
| - continue; |
355 |
| - } |
356 |
| - |
357 |
| - /* the runtime is required to fill in locality for all local processes by this |
358 |
| - * point. only local processes will have locality set */ |
359 |
| - u16ptr = &u16; |
360 |
| - OPAL_MODEX_RECV_VALUE_OPTIONAL(ret, OPAL_PMIX_LOCALITY, &proc_name, &u16ptr, OPAL_UINT16); |
361 |
| - if (OPAL_SUCCESS == ret) { |
362 |
| - locality = u16; |
363 |
| - } |
364 |
| - |
365 |
| - if (OPAL_PROC_NON_LOCAL != locality) { |
| 347 | + /* retrieve the local peers */ |
| 348 | + OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_PEERS, |
| 349 | + ORTE_PROC_MY_NAME, &val, OPAL_STRING); |
| 350 | + if (OPAL_SUCCESS == ret && NULL != val) { |
| 351 | + char **peers = opal_argv_split(val, ','); |
| 352 | + int i; |
| 353 | + free(val); |
| 354 | + for (i=0; NULL != peers[i]; i++) { |
| 355 | + ompi_vpid_t local_rank = strtoul(peers[i], NULL, 10); |
| 356 | + opal_process_name_t proc_name = {.vpid = local_rank, .jobid = OMPI_PROC_MY_NAME->jobid}; |
| 357 | + |
| 358 | + if (OMPI_PROC_MY_NAME->vpid == local_rank) { |
| 359 | + continue; |
| 360 | + } |
366 | 361 | (void) ompi_proc_for_name (proc_name);
|
367 | 362 | }
|
| 363 | + opal_argv_free(peers); |
368 | 364 | }
|
369 | 365 | }
|
370 | 366 |
|
|
0 commit comments