Per July technical meeting:
Revise the scope precedence in the MPI_Publish, Unpublish, and Lookup functions. If a global server was specified and is available, then default to using it for all three functions. If not, then default to using local scope. If an info_key was provided, then it takes preference. We always follow the user's direction - this change only impacts the scope ordering if the user -doesn't- tell us the order to use. This commit was SVN r19146.
Этот коммит содержится в:
родитель
e6f700bf04
Коммит
5a2053ade2
@ -141,12 +141,20 @@ static int publish ( char *service_name, ompi_info_t *info, char *port_name )
|
|||||||
|
|
||||||
ompi_info_get_bool(info, "ompi_global_scope", &global_scope, &flag);
|
ompi_info_get_bool(info, "ompi_global_scope", &global_scope, &flag);
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, ompi_pubsub_base_output,
|
if (0 == flag) {
|
||||||
"%s pubsub:orte: publishing service %s scope %s",
|
/* scope was not defined - see if server exists */
|
||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
if (!server_setup) {
|
||||||
service_name, global_scope ? "Global" : "Local"));
|
setup_server();
|
||||||
|
}
|
||||||
if (!global_scope) {
|
if (mca_pubsub_orte_component.server_found) {
|
||||||
|
/* server was found - use it as our default store */
|
||||||
|
info_host = &mca_pubsub_orte_component.server;
|
||||||
|
global_scope = true;
|
||||||
|
} else {
|
||||||
|
/* server was not found - use our HNP as default store */
|
||||||
|
info_host = ORTE_PROC_MY_HNP;
|
||||||
|
}
|
||||||
|
} else if (!global_scope) {
|
||||||
/* if the scope is not global, then store the value on the HNP */
|
/* if the scope is not global, then store the value on the HNP */
|
||||||
info_host = ORTE_PROC_MY_HNP;
|
info_host = ORTE_PROC_MY_HNP;
|
||||||
} else {
|
} else {
|
||||||
@ -165,6 +173,11 @@ static int publish ( char *service_name, ompi_info_t *info, char *port_name )
|
|||||||
info_host = &mca_pubsub_orte_component.server;
|
info_host = &mca_pubsub_orte_component.server;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OPAL_OUTPUT_VERBOSE((1, ompi_pubsub_base_output,
|
||||||
|
"%s pubsub:orte: publishing service %s scope %s",
|
||||||
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
|
service_name, global_scope ? "Global" : "Local"));
|
||||||
|
|
||||||
/* construct the buffer */
|
/* construct the buffer */
|
||||||
OBJ_CONSTRUCT(&buf, opal_buffer_t);
|
OBJ_CONSTRUCT(&buf, opal_buffer_t);
|
||||||
|
|
||||||
@ -226,7 +239,7 @@ static char* lookup ( char *service_name, ompi_info_t *info )
|
|||||||
char *port_name=NULL;
|
char *port_name=NULL;
|
||||||
int ret, rc, flag, i;
|
int ret, rc, flag, i;
|
||||||
char value[256], **tokens, *ptr;
|
char value[256], **tokens, *ptr;
|
||||||
int lookup[2] = { LOCAL, GLOBAL };
|
int lookup[2] = { GLOBAL, LOCAL };
|
||||||
size_t num_tokens;
|
size_t num_tokens;
|
||||||
|
|
||||||
/* Look in the MPI_Info (ompi_info_t*) for the key
|
/* Look in the MPI_Info (ompi_info_t*) for the key
|
||||||
@ -283,6 +296,29 @@ static char* lookup ( char *service_name, ompi_info_t *info )
|
|||||||
opal_argv_free(tokens);
|
opal_argv_free(tokens);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (NONE == lookup[0]) {
|
||||||
|
/* if the user provided an info key, then we at least must
|
||||||
|
* be given one place to look
|
||||||
|
*/
|
||||||
|
orte_show_help("help-ompi-pubsub-orte.txt",
|
||||||
|
"pubsub-orte:unknown-order",
|
||||||
|
true, (long)ORTE_PROC_MY_NAME->vpid);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
/* if no info key was provided, then we default to the global
|
||||||
|
* server IF it is active
|
||||||
|
*/
|
||||||
|
if (!server_setup) {
|
||||||
|
setup_server();
|
||||||
|
}
|
||||||
|
if (!mca_pubsub_orte_component.server_found) {
|
||||||
|
/* global server was not found - just look local */
|
||||||
|
lookup[0] = LOCAL;
|
||||||
|
lookup[1] = NONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, ompi_pubsub_base_output,
|
OPAL_OUTPUT_VERBOSE((1, ompi_pubsub_base_output,
|
||||||
@ -290,34 +326,6 @@ static char* lookup ( char *service_name, ompi_info_t *info )
|
|||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
service_name, lookup[0]));
|
service_name, lookup[0]));
|
||||||
|
|
||||||
/* check for error situations */
|
|
||||||
|
|
||||||
if (NONE == lookup[0]) {
|
|
||||||
/* if the user provided an info key, then we at least must
|
|
||||||
* be given one place to look
|
|
||||||
*/
|
|
||||||
orte_show_help("help-ompi-pubsub-orte.txt",
|
|
||||||
"pubsub-orte:unknown-order",
|
|
||||||
true, (long)ORTE_PROC_MY_NAME->vpid);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (GLOBAL == lookup[0]) {
|
|
||||||
/* has the server been setup yet? */
|
|
||||||
if (!server_setup) {
|
|
||||||
setup_server();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mca_pubsub_orte_component.server_found) {
|
|
||||||
/* if we were told to look global first and no server is
|
|
||||||
* present, then that is an error
|
|
||||||
*/
|
|
||||||
orte_show_help("help-ompi-pubsub-orte.txt", "pubsub-orte:no-server",
|
|
||||||
true, (long)ORTE_PROC_MY_NAME->vpid, "lookup from");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* go find the value */
|
/* go find the value */
|
||||||
for (i=0; i < 2; i++) {
|
for (i=0; i < 2; i++) {
|
||||||
if (LOCAL == lookup[i]) {
|
if (LOCAL == lookup[i]) {
|
||||||
@ -339,6 +347,8 @@ static char* lookup ( char *service_name, ompi_info_t *info )
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
info_host = &mca_pubsub_orte_component.server;
|
info_host = &mca_pubsub_orte_component.server;
|
||||||
|
} else if (NONE == lookup[i]) {
|
||||||
|
continue;
|
||||||
} else {
|
} else {
|
||||||
/* unknown host! */
|
/* unknown host! */
|
||||||
orte_show_help("help-ompi-pubsub-orte.txt",
|
orte_show_help("help-ompi-pubsub-orte.txt",
|
||||||
@ -431,12 +441,20 @@ static int unpublish ( char *service_name, ompi_info_t *info )
|
|||||||
|
|
||||||
ompi_info_get_bool(info, "ompi_global_scope", &global_scope, &flag);
|
ompi_info_get_bool(info, "ompi_global_scope", &global_scope, &flag);
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, ompi_pubsub_base_output,
|
if (0 == flag) {
|
||||||
"%s pubsub:orte: unpublish service %s scope %s",
|
/* scope was not defined - see if server exists */
|
||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
if (!server_setup) {
|
||||||
service_name, global_scope ? "Global" : "Local"));
|
setup_server();
|
||||||
|
}
|
||||||
if (!global_scope) {
|
if (mca_pubsub_orte_component.server_found) {
|
||||||
|
/* server was found - use it as our default store */
|
||||||
|
info_host = &mca_pubsub_orte_component.server;
|
||||||
|
global_scope = true;
|
||||||
|
} else {
|
||||||
|
/* server was not found - use our HNP as default store */
|
||||||
|
info_host = ORTE_PROC_MY_HNP;
|
||||||
|
}
|
||||||
|
} else if (!global_scope) {
|
||||||
/* if the scope is not global, then unpublish the value from the HNP */
|
/* if the scope is not global, then unpublish the value from the HNP */
|
||||||
info_host = ORTE_PROC_MY_HNP;
|
info_host = ORTE_PROC_MY_HNP;
|
||||||
} else {
|
} else {
|
||||||
@ -449,12 +467,17 @@ static int unpublish ( char *service_name, ompi_info_t *info )
|
|||||||
*/
|
*/
|
||||||
if (!mca_pubsub_orte_component.server_found) {
|
if (!mca_pubsub_orte_component.server_found) {
|
||||||
orte_show_help("help-ompi-pubsub-orte.txt", "pubsub-orte:no-server",
|
orte_show_help("help-ompi-pubsub-orte.txt", "pubsub-orte:no-server",
|
||||||
true);
|
true, (long)ORTE_PROC_MY_NAME->vpid, "unpublish from");
|
||||||
return OMPI_ERR_NOT_FOUND;
|
return OMPI_ERR_NOT_FOUND;
|
||||||
}
|
}
|
||||||
info_host = &mca_pubsub_orte_component.server;
|
info_host = &mca_pubsub_orte_component.server;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OPAL_OUTPUT_VERBOSE((1, ompi_pubsub_base_output,
|
||||||
|
"%s pubsub:orte: unpublish service %s scope %s",
|
||||||
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
|
service_name, global_scope ? "Global" : "Local"));
|
||||||
|
|
||||||
/* construct the buffer */
|
/* construct the buffer */
|
||||||
OBJ_CONSTRUCT(&buf, opal_buffer_t);
|
OBJ_CONSTRUCT(&buf, opal_buffer_t);
|
||||||
|
|
||||||
|
@ -80,6 +80,11 @@ specified.
|
|||||||
.TP 4
|
.TP 4
|
||||||
\fIglobal,local\fP: Search the global scope for name resolution. If
|
\fIglobal,local\fP: Search the global scope for name resolution. If
|
||||||
not found, try searching the local scope for name resolution.
|
not found, try searching the local scope for name resolution.
|
||||||
|
.PP
|
||||||
|
If no info key is provided, the search will first check to see if a
|
||||||
|
global server has been specified and is available. If so, then the
|
||||||
|
search will default to global scope first, followed by local. Otherwise,
|
||||||
|
the search will default to local.
|
||||||
|
|
||||||
.SH NAME SCOPE
|
.SH NAME SCOPE
|
||||||
Open MPI supports two name scopes: \fIglobal\fP and \fIlocal\fP. Local scope
|
Open MPI supports two name scopes: \fIglobal\fP and \fIlocal\fP. Local scope
|
||||||
|
@ -76,6 +76,11 @@ and non-zero values are true). If the string value is
|
|||||||
(case-insensitive) "yes" or "true", the boolean is true. If the
|
(case-insensitive) "yes" or "true", the boolean is true. If the
|
||||||
string value is (case-insensitive) "no" or "false", the boolean is
|
string value is (case-insensitive) "no" or "false", the boolean is
|
||||||
false. All other string values are unrecognized, and therefore false.
|
false. All other string values are unrecognized, and therefore false.
|
||||||
|
.PP
|
||||||
|
If no info key is provided, the function will first check to see if a
|
||||||
|
global server has been specified and is available. If so, then the
|
||||||
|
publish function will default to global scope first, followed by local. Otherwise,
|
||||||
|
the data will default to publish with local scope.
|
||||||
|
|
||||||
.SH NAME SCOPE
|
.SH NAME SCOPE
|
||||||
Open MPI supports two name scopes: \fIglobal\fP and \fIlocal\fP. Local scope will
|
Open MPI supports two name scopes: \fIglobal\fP and \fIlocal\fP. Local scope will
|
||||||
|
@ -78,6 +78,11 @@ and non-zero values are true). If the string value is
|
|||||||
(case-insensitive) "yes" or "true", the boolean is true. If the
|
(case-insensitive) "yes" or "true", the boolean is true. If the
|
||||||
string value is (case-insensitive) "no" or "false", the boolean is
|
string value is (case-insensitive) "no" or "false", the boolean is
|
||||||
false. All other string values are unrecognized, and therefore false.
|
false. All other string values are unrecognized, and therefore false.
|
||||||
|
.PP
|
||||||
|
If no info key is provided, the function will first check to see if a
|
||||||
|
global server has been specified and is available. If so, then the
|
||||||
|
unpublish function will default to global scope first, followed by local. Otherwise,
|
||||||
|
the data will default to unpublish with local scope.
|
||||||
|
|
||||||
.SH NAME SCOPE
|
.SH NAME SCOPE
|
||||||
Open MPI supports two name scopes: \fIglobal\fP and \fIlocal\fP. Local scope
|
Open MPI supports two name scopes: \fIglobal\fP and \fIlocal\fP. Local scope
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user