1
1

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.
Этот коммит содержится в:
Jeff Squyres 2005-06-18 00:58:27 +00:00
родитель 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