Fix for a problem Tim Prins noticed earlier today:
mpirun -np 1 uptime : -np 1 hostname would fail, claiming that it was out of resources. Turns out that the code was incorrectly checking for "no more nodes". This patch fixes that, both for the schedule-by-node and schedule-by-slot algorithms. This commit was SVN r6088.
Этот коммит содержится в:
родитель
552fadcddd
Коммит
1ebb22f44c
@ -112,12 +112,16 @@ static int map_app_by_node(
|
|||||||
the node list to start looking (i.e., if this is the first time
|
the node list to start looking (i.e., if this is the first time
|
||||||
through, it'll point to the first item. If this is not the
|
through, it'll point to the first item. If this is not the
|
||||||
first time through -- i.e., we have multiple app contexts --
|
first time through -- i.e., we have multiple app contexts --
|
||||||
it'll point to where we left off last time.).
|
it'll point to where we left off last time.). If we're at the
|
||||||
|
end, bounce back to the front (as would happen in the loop
|
||||||
|
below)
|
||||||
|
|
||||||
But do a bozo check to ensure that we don't have a empty node
|
But do a bozo check to ensure that we don't have a empty node
|
||||||
list. */
|
list. */
|
||||||
if (ompi_list_get_end(nodes) == cur_node_item) {
|
if (0 == ompi_list_get_size(nodes)) {
|
||||||
return ORTE_ERR_TEMP_OUT_OF_RESOURCE;
|
return ORTE_ERR_TEMP_OUT_OF_RESOURCE;
|
||||||
|
} else if (ompi_list_get_end(nodes) == cur_node_item) {
|
||||||
|
cur_node_item = ompi_list_get_first(nodes);
|
||||||
}
|
}
|
||||||
start = cur_node_item;
|
start = cur_node_item;
|
||||||
|
|
||||||
@ -219,12 +223,16 @@ static int map_app_by_slot(
|
|||||||
the node list to start looking (i.e., if this is the first time
|
the node list to start looking (i.e., if this is the first time
|
||||||
through, it'll point to the first item. If this is not the
|
through, it'll point to the first item. If this is not the
|
||||||
first time through -- i.e., we have multiple app contexts --
|
first time through -- i.e., we have multiple app contexts --
|
||||||
it'll point to where we left off last time.).
|
it'll point to where we left off last time.). If we're at the
|
||||||
|
end, bounce back to the front (as would happen in the loop
|
||||||
|
below)
|
||||||
|
|
||||||
But do a bozo check to ensure that we don't have a empty node
|
But do a bozo check to ensure that we don't have a empty node
|
||||||
list. */
|
list. */
|
||||||
if (ompi_list_get_end(nodes) == cur_node_item) {
|
if (0 == ompi_list_get_size(nodes)) {
|
||||||
return ORTE_ERR_TEMP_OUT_OF_RESOURCE;
|
return ORTE_ERR_TEMP_OUT_OF_RESOURCE;
|
||||||
|
} else if (ompi_list_get_end(nodes) == cur_node_item) {
|
||||||
|
cur_node_item = ompi_list_get_first(nodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Go through all nodes and take up to node_slots_alloc slots and
|
/* Go through all nodes and take up to node_slots_alloc slots and
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user