1
1

Default the OOB to the "ud" component IFF the HNP finds itself on a node with a supported Infiniband device. Ensure that the daemons all pick the matching component by dictating the selection via mca param on the orted cmd line.

This commit was SVN r26582.
Этот коммит содержится в:
Ralph Castain 2012-06-08 01:23:08 +00:00
родитель 1c246f28f3
Коммит 0442a807c0
5 изменённых файлов: 29 добавлений и 2 удалений

Просмотреть файл

@ -10,6 +10,8 @@
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2012 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -27,6 +29,7 @@
#include "opal/util/output.h"
#include "opal/mca/base/base.h"
#include "orte/runtime/orte_globals.h"
#include "orte/mca/oob/oob.h"
#include "orte/mca/oob/base/base.h"
@ -56,7 +59,7 @@ int mca_oob_base_init(void)
{
opal_list_item_t *item;
mca_base_component_list_item_t *cli;
mca_oob_base_component_t *component;
mca_oob_base_component_t *component, *s_component;
mca_oob_t *module;
mca_oob_t *s_module = NULL;
int s_priority = -1;
@ -85,6 +88,7 @@ int mca_oob_base_init(void)
if(priority > s_priority) {
s_priority = priority;
s_module = module;
s_component = component;
}
}
}
@ -97,6 +101,10 @@ int mca_oob_base_init(void)
}
mca_oob = *s_module;
/* record the name of the selected component */
orte_selected_oob_component = strdup(s_component->oob_base.mca_component_name);
opal_output_verbose(10, mca_oob_base_output, "mca_oob_base_init: %s module selected\n", orte_selected_oob_component);
return ORTE_SUCCESS;
}

Просмотреть файл

@ -212,7 +212,14 @@ static mca_oob_t *mca_oob_ud_component_init(int *priority)
struct ibv_device **devices;
int num_devices, i, rc;
*priority = 0;
/* set the priority so that we will select this component
* IF devices are available. Note that only the HNP has
* the freedom to make this decision as we will use the
* mca param on the orted cmd line to dictate that it
* match the HNP's choice. The value gets ignored if
* the NULL module is returned
*/
*priority = 100;
opal_hash_table_init (&mca_oob_ud_component.ud_peers, 1024);

Просмотреть файл

@ -992,6 +992,13 @@ int orte_plm_base_orted_append_basic_args(int *argc, char ***argv,
}
}
if (NULL != orte_selected_oob_component) {
/* ensure we all use the same OOB component */
opal_argv_append(argc, argv, "-mca");
opal_argv_append(argc, argv, "oob");
opal_argv_append(argc, argv, orte_selected_oob_component);
}
return ORTE_SUCCESS;
}

Просмотреть файл

@ -195,6 +195,8 @@ opal_thread_t orte_progress_thread;
opal_event_t orte_finalize_event;
#endif
char *orte_selected_oob_component = NULL;
#endif /* !ORTE_DISABLE_FULL_RTE */
int orte_debug_output = -1;

Просмотреть файл

@ -720,6 +720,9 @@ ORTE_DECLSPEC extern bool orte_map_stddiag_to_stderr;
/* maximum size of virtual machine - used to subdivide allocation */
ORTE_DECLSPEC extern int orte_max_vm_size;
/* record the selected oob component */
ORTE_DECLSPEC extern char *orte_selected_oob_component;
#endif /* ORTE_DISABLE_FULL_SUPPORT */
END_C_DECLS