- Only return the nodes actually allocated to the job.
(necessary when orted handles several jobs simultaneously). This commit was SVN r7105.
Этот коммит содержится в:
родитель
0fddc53603
Коммит
27f1174d0e
@ -34,8 +34,8 @@ static void orte_ras_base_node_construct(orte_ras_node_t* node)
|
|||||||
node->node_cellid = 0;
|
node->node_cellid = 0;
|
||||||
node->node_state = ORTE_NODE_STATE_UNKNOWN;
|
node->node_state = ORTE_NODE_STATE_UNKNOWN;
|
||||||
node->node_slots = 0;
|
node->node_slots = 0;
|
||||||
node->node_slots_alloc = 0;
|
|
||||||
node->node_slots_inuse = 0;
|
node->node_slots_inuse = 0;
|
||||||
|
node->node_slots_alloc = 0;
|
||||||
node->node_slots_max = 0;
|
node->node_slots_max = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,9 +127,9 @@ int orte_ras_base_node_query(opal_list_t* nodes)
|
|||||||
*/
|
*/
|
||||||
int orte_ras_base_node_query_alloc(opal_list_t* nodes, orte_jobid_t jobid)
|
int orte_ras_base_node_query_alloc(opal_list_t* nodes, orte_jobid_t jobid)
|
||||||
{
|
{
|
||||||
char* keys[] = {
|
char* keys[] = {
|
||||||
ORTE_NODE_NAME_KEY,
|
ORTE_NODE_NAME_KEY,
|
||||||
ORTE_NODE_ARCH_KEY,
|
ORTE_NODE_ARCH_KEY,
|
||||||
ORTE_NODE_STATE_KEY,
|
ORTE_NODE_STATE_KEY,
|
||||||
ORTE_NODE_SLOTS_KEY,
|
ORTE_NODE_SLOTS_KEY,
|
||||||
ORTE_NODE_SLOTS_ALLOC_KEY,
|
ORTE_NODE_SLOTS_ALLOC_KEY,
|
||||||
@ -137,7 +137,7 @@ int orte_ras_base_node_query_alloc(opal_list_t* nodes, orte_jobid_t jobid)
|
|||||||
ORTE_CELLID_KEY,
|
ORTE_CELLID_KEY,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
size_t i, cnt;
|
size_t i, cnt, keys_len;
|
||||||
orte_gpr_value_t** values;
|
orte_gpr_value_t** values;
|
||||||
char* jobid_str;
|
char* jobid_str;
|
||||||
int rc;
|
int rc;
|
||||||
@ -146,7 +146,9 @@ int orte_ras_base_node_query_alloc(opal_list_t* nodes, orte_jobid_t jobid)
|
|||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
asprintf(&keys[4], "%s-%s", ORTE_NODE_SLOTS_ALLOC_KEY, jobid_str);
|
asprintf(&keys[4], "%s-%s", ORTE_NODE_SLOTS_ALLOC_KEY, jobid_str);
|
||||||
|
keys_len = strlen(keys[4]);
|
||||||
free(jobid_str);
|
free(jobid_str);
|
||||||
|
|
||||||
/* query selected node entries */
|
/* query selected node entries */
|
||||||
@ -165,10 +167,25 @@ int orte_ras_base_node_query_alloc(opal_list_t* nodes, orte_jobid_t jobid)
|
|||||||
/* parse the response */
|
/* parse the response */
|
||||||
for(i=0; i<cnt; i++) {
|
for(i=0; i<cnt; i++) {
|
||||||
orte_gpr_value_t* value = values[i];
|
orte_gpr_value_t* value = values[i];
|
||||||
orte_ras_node_t* node = OBJ_NEW(orte_ras_node_t);
|
orte_ras_node_t* node;
|
||||||
size_t k;
|
size_t k;
|
||||||
|
bool found;
|
||||||
|
|
||||||
for(k=0; k<value->cnt; k++) {
|
found = false;
|
||||||
|
for (k = 0; k < value->cnt; k++) {
|
||||||
|
orte_gpr_keyval_t* keyval = value->keyvals[k];
|
||||||
|
|
||||||
|
if(0 == strcmp(keyval->key, keys[4])) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
node = OBJ_NEW(orte_ras_node_t);
|
||||||
|
|
||||||
|
for(k=0; k < value->cnt; k++) {
|
||||||
orte_gpr_keyval_t* keyval = value->keyvals[k];
|
orte_gpr_keyval_t* keyval = value->keyvals[k];
|
||||||
if(strcmp(keyval->key, ORTE_NODE_NAME_KEY) == 0) {
|
if(strcmp(keyval->key, ORTE_NODE_NAME_KEY) == 0) {
|
||||||
node->node_name = strdup(keyval->value.strptr);
|
node->node_name = strdup(keyval->value.strptr);
|
||||||
@ -186,7 +203,7 @@ int orte_ras_base_node_query_alloc(opal_list_t* nodes, orte_jobid_t jobid)
|
|||||||
node->node_slots = keyval->value.size;
|
node->node_slots = keyval->value.size;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(strncmp(keyval->key, ORTE_NODE_SLOTS_ALLOC_KEY, strlen(ORTE_NODE_SLOTS_ALLOC_KEY)) == 0) {
|
if(strncmp(keyval->key, keys[4], keys_len) == 0) {
|
||||||
node->node_slots_inuse += keyval->value.size;
|
node->node_slots_inuse += keyval->value.size;
|
||||||
node->node_slots_alloc += keyval->value.size;
|
node->node_slots_alloc += keyval->value.size;
|
||||||
continue;
|
continue;
|
||||||
@ -207,6 +224,8 @@ int orte_ras_base_node_query_alloc(opal_list_t* nodes, orte_jobid_t jobid)
|
|||||||
}
|
}
|
||||||
opal_list_append(nodes, &node->super);
|
opal_list_append(nodes, &node->super);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free (keys[4]);
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user