1
1

Cleanup the SDS components and move some common code to the base.

Modify the seed and singleton SDS code so it returns the right local rank and num_local_procs.

This commit was SVN r14707.
Этот коммит содержится в:
Ralph Castain 2007-05-21 14:57:58 +00:00
родитель d9acc93efa
Коммит 3288ce0462
7 изменённых файлов: 26 добавлений и 149 удалений

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

@ -26,4 +26,5 @@ libmca_sds_la_SOURCES += \
base/sds_base_interface.c \ base/sds_base_interface.c \
base/sds_base_orted_contact.c \ base/sds_base_orted_contact.c \
base/sds_base_universe.c \ base/sds_base_universe.c \
base/sds_base_get.c \
base/sds_base_put.c base/sds_base_put.c

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

@ -66,6 +66,7 @@ extern "C" {
ORTE_DECLSPEC int orte_sds_base_basic_contact_universe(void); ORTE_DECLSPEC int orte_sds_base_basic_contact_universe(void);
ORTE_DECLSPEC int orte_sds_base_seed_set_name(void); ORTE_DECLSPEC int orte_sds_base_seed_set_name(void);
ORTE_DECLSPEC int orte_sds_base_contact_orted(char *orted_uri); ORTE_DECLSPEC int orte_sds_base_contact_orted(char *orted_uri);
ORTE_DECLSPEC int orte_sds_env_get(void);
/* /*
* Put functions * Put functions

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

@ -122,6 +122,12 @@ orte_sds_base_seed_set_name(void)
{ {
int id, flag, rc; int id, flag, rc;
/* if we are a seed, then there can be only one proc */
orte_process_info.num_procs = 1;
orte_process_info.vpid_start = 0;
orte_process_info.local_rank = 0;
orte_process_info.num_local_procs = 1;
/* if we're a seed and we're not infrastructure, we're also a /* if we're a seed and we're not infrastructure, we're also a
singleton. So set the singleton flag in that case */ singleton. So set the singleton flag in that case */
id = mca_base_param_find("orte", NULL, "infrastructure"); id = mca_base_param_find("orte", NULL, "infrastructure");

52
orte/mca/sds/env/sds_env_module.c поставляемый
Просмотреть файл

@ -46,13 +46,7 @@ orte_sds_env_set_name(void)
{ {
int rc; int rc;
int id; int id;
int vpid_start;
int num_procs;
int local_rank;
int num_local_procs;
char* name_string = NULL; char* name_string = NULL;
char *local_daemon_uri = NULL;
id = mca_base_param_register_string("ns", "nds", "name", NULL, NULL); id = mca_base_param_register_string("ns", "nds", "name", NULL, NULL);
mca_base_param_lookup_string(id, &name_string); mca_base_param_lookup_string(id, &name_string);
@ -119,48 +113,10 @@ orte_sds_env_set_name(void)
} }
} }
id = mca_base_param_register_int("ns", "nds", "vpid_start", NULL, -1); /* get the non-name common environmental variables */
mca_base_param_lookup_int(id, &vpid_start); if (ORTE_SUCCESS != (rc = orte_sds_env_get())) {
if (vpid_start < 0) { ORTE_ERROR_LOG(rc);
ORTE_ERROR_LOG(ORTE_ERR_NOT_FOUND); return rc;
return ORTE_ERR_NOT_FOUND;
}
orte_process_info.vpid_start = (orte_vpid_t)vpid_start;
id = mca_base_param_register_int("ns", "nds", "num_procs", NULL, -1);
mca_base_param_lookup_int(id, &num_procs);
if (num_procs < 0) {
ORTE_ERROR_LOG(ORTE_ERR_NOT_FOUND);
return ORTE_ERR_NOT_FOUND;
}
orte_process_info.num_procs = (orte_std_cntr_t)num_procs;
/* it is okay for this param not to be found - for example, we don't bother
* to set it for orteds - so just set it to an invalid value which indicates
* it wasn't found if it isn't there
*/
id = mca_base_param_register_int("ns", "nds", "local_rank", NULL, ORTE_VPID_INVALID);
mca_base_param_lookup_int(id, &local_rank);
orte_process_info.local_rank = (orte_vpid_t)local_rank;
/* it is okay for this param not to be found - for example, we don't bother
* to set it for orteds - so just set it to a value which indicates
* it wasn't found if it isn't there
*/
id = mca_base_param_register_int("ns", "nds", "num_local_procs", NULL, 0);
mca_base_param_lookup_int(id, &num_local_procs);
orte_process_info.num_local_procs = (orte_std_cntr_t)num_local_procs;
id = mca_base_param_register_string("orte", "local_daemon", "uri", NULL, NULL);
mca_base_param_lookup_string(id, &local_daemon_uri);
if (NULL != local_daemon_uri) {
/* if we are a daemon, then we won't have this param set, so allow
* it not to be found
*/
if (ORTE_SUCCESS != (rc = orte_sds_base_contact_orted(local_daemon_uri))) {
ORTE_ERROR_LOG(rc);
return(rc);
}
} }
return ORTE_SUCCESS; return ORTE_SUCCESS;

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

@ -52,17 +52,18 @@ orte_sds_singleton_set_name(void)
orte_process_info.num_procs = 1; orte_process_info.num_procs = 1;
orte_process_info.vpid_start = vpid; orte_process_info.vpid_start = vpid;
/* since we are a singleton, then we must have a local_rank of 0
* and only 1 local process
*/
orte_process_info.local_rank = 0;
orte_process_info.num_local_procs = 1;
/* only set the singleton flag is we are NOT infrastructure, /* only set the singleton flag is we are NOT infrastructure,
and it has not been previously set. */ and it has not been previously set. */
id = mca_base_param_find("orte", NULL, "infrastructure"); id = mca_base_param_find("orte", NULL, "infrastructure");
mca_base_param_lookup_int(id, &flag); mca_base_param_lookup_int(id, &flag);
if (!flag) { if (!flag) {
orte_process_info.singleton = true; orte_process_info.singleton = true;
/* since we are a singleton, then we must have a local_rank of 0
* and only 1 local process
*/
orte_process_info.local_rank = 0;
orte_process_info.num_local_procs = 1;
} }
return ORTE_SUCCESS; return ORTE_SUCCESS;

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

@ -54,13 +54,8 @@ orte_sds_slurm_set_name(void)
{ {
int rc; int rc;
int id; int id;
int vpid_start;
int num_procs;
int local_rank;
int num_local_procs;
char* name_string = NULL; char* name_string = NULL;
int slurm_nodeid; int slurm_nodeid;
char *local_daemon_uri = NULL;
/* start by getting our cellid, jobid, and vpid (which is the /* start by getting our cellid, jobid, and vpid (which is the
starting vpid for the list of daemons) */ starting vpid for the list of daemons) */
@ -137,48 +132,10 @@ orte_sds_slurm_set_name(void)
} }
orte_system_info.nodename = get_slurm_nodename(slurm_nodeid); orte_system_info.nodename = get_slurm_nodename(slurm_nodeid);
id = mca_base_param_register_int("ns", "nds", "vpid_start", NULL, -1); /* get the non-name common environmental variables */
mca_base_param_lookup_int(id, &vpid_start); if (ORTE_SUCCESS != (rc = orte_sds_env_get())) {
if (vpid_start < 0) { ORTE_ERROR_LOG(rc);
ORTE_ERROR_LOG(ORTE_ERR_NOT_FOUND); return rc;
return ORTE_ERR_NOT_FOUND;
}
orte_process_info.vpid_start = (orte_vpid_t)vpid_start;
id = mca_base_param_register_int("ns", "nds", "num_procs", NULL, -1);
mca_base_param_lookup_int(id, &num_procs);
if (num_procs < 0) {
ORTE_ERROR_LOG(ORTE_ERR_NOT_FOUND);
return ORTE_ERR_NOT_FOUND;
}
orte_process_info.num_procs = (orte_std_cntr_t)num_procs;
/* it is okay for this param not to be found - for example, we don't bother
* to set it for orteds - so just set it to an invalid value which indicates
* it wasn't found if it isn't there
*/
id = mca_base_param_register_int("ns", "nds", "local_rank", NULL, ORTE_VPID_INVALID);
mca_base_param_lookup_int(id, &local_rank);
orte_process_info.local_rank = (orte_vpid_t)local_rank;
/* it is okay for this param not to be found - for example, we don't bother
* to set it for orteds - so just set it to a value which indicates
* it wasn't found if it isn't there
*/
id = mca_base_param_register_int("ns", "nds", "num_local_procs", NULL, 0);
mca_base_param_lookup_int(id, &num_local_procs);
orte_process_info.num_local_procs = (orte_std_cntr_t)num_local_procs;
id = mca_base_param_register_string("orte", "local_daemon", "uri", NULL, NULL);
mca_base_param_lookup_string(id, &local_daemon_uri);
if (NULL != local_daemon_uri) {
/* if we are a daemon, then we won't have this param set, so allow
* it not to be found
*/
if (ORTE_SUCCESS != (rc = orte_sds_base_contact_orted(local_daemon_uri))) {
ORTE_ERROR_LOG(rc);
return(rc);
}
} }
return ORTE_SUCCESS; return ORTE_SUCCESS;

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

@ -65,12 +65,10 @@ int orte_sds_xcpu_set_name(void)
orte_cellid_t cellid; orte_cellid_t cellid;
orte_jobid_t jobid; orte_jobid_t jobid;
orte_vpid_t vpid;
orte_vpid_t vpid_start; orte_vpid_t vpid_start;
char* cellid_string; char* cellid_string;
char* jobid_string; char* jobid_string;
char* vpid_string; char* vpid_string;
int num_procs, local_rank, num_local_procs;
char *xcpu_rank_string; char *xcpu_rank_string;
int xcpu_rank; int xcpu_rank;
int stride; int stride;
@ -109,55 +107,12 @@ int orte_sds_xcpu_set_name(void)
xcpu_rank = (int)strtol(xcpu_rank_string+1, NULL, 10); xcpu_rank = (int)strtol(xcpu_rank_string+1, NULL, 10);
id = mca_base_param_register_string("ns", "nds", "vpid_start", NULL, NULL); /* get the non-name common environmental variables */
mca_base_param_lookup_string(id, &vpid_string); if (ORTE_SUCCESS != (rc = orte_sds_env_get())) {
if (NULL == vpid_string) {
ORTE_ERROR_LOG(ORTE_ERR_NOT_FOUND);
return ORTE_ERR_NOT_FOUND;
}
rc = orte_ns.convert_string_to_vpid(&vpid_start, vpid_string);
if (ORTE_SUCCESS != rc) {
ORTE_ERROR_LOG(rc); ORTE_ERROR_LOG(rc);
return(rc); return rc;
} }
/* compute our vpid */
vpid = vpid_start + xcpu_rank - 1;
/* create our name */
if (ORTE_SUCCESS != (rc = orte_ns.create_process_name(
&(orte_process_info.my_name),
cellid,
jobid,
vpid))) {
ORTE_ERROR_LOG(rc);
return rc;
}
id = mca_base_param_register_int("ns", "nds", "num_procs", NULL, -1);
mca_base_param_lookup_int(id, &num_procs);
if (num_procs < 0) {
ORTE_ERROR_LOG(ORTE_ERR_NOT_FOUND);
return ORTE_ERR_NOT_FOUND;
}
orte_process_info.num_procs = (orte_std_cntr_t)num_procs;
/* it is okay for this param not to be found - for example, we don't bother
* to set it for orteds - so just set it to an invalid value which indicates
* it wasn't found if it isn't there
*/
id = mca_base_param_register_int("ns", "nds", "local_rank", NULL, ORTE_VPID_INVALID);
mca_base_param_lookup_int(id, &local_rank);
orte_process_info.local_rank = (orte_vpid_t)local_rank;
/* it is okay for this param not to be found - for example, we don't bother
* to set it for orteds - so just set it to a value which indicates
* it wasn't found if it isn't there
*/
id = mca_base_param_register_int("ns", "nds", "num_local_procs", NULL, 0);
mca_base_param_lookup_int(id, &num_local_procs);
orte_process_info.num_local_procs = (orte_std_cntr_t)num_local_procs;
#if 0 #if 0
id = mca_base_param_register_string("ns", "nds", "global_vpid_start", NULL, NULL); id = mca_base_param_register_string("ns", "nds", "global_vpid_start", NULL, NULL);
mca_base_param_lookup_string(id, &vpid_string); mca_base_param_lookup_string(id, &vpid_string);