Remove completed children from the local list of child processes so that we properly track our number of children. Otherwise, we can artificially believe we have exceeded system limits on the number of local children.
This commit was SVN r20667.
Этот коммит содержится в:
родитель
f0fcaf8b32
Коммит
15171e4ba8
@ -706,6 +706,10 @@ static int odls_base_default_setup_fork(orte_app_context_t *context,
|
||||
* no limit, so treat it as unlimited here.
|
||||
*/
|
||||
if (opal_sys_limits.initialized) {
|
||||
OPAL_OUTPUT_VERBOSE((10, "%s limit on num procs %d num children %d",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||
opal_sys_limits.num_procs,
|
||||
(int)opal_list_get_size(&orte_local_children)));
|
||||
if (0 < opal_sys_limits.num_procs &&
|
||||
opal_sys_limits.num_procs <= (int)opal_list_get_size(&orte_local_children)) {
|
||||
/* at the system limit - abort */
|
||||
@ -1982,6 +1986,11 @@ static void check_proc_complete(orte_odls_child_t *child)
|
||||
}
|
||||
|
||||
unlock:
|
||||
/* remove this child from the global list - do not lock
|
||||
* the thread as we are already locked
|
||||
*/
|
||||
opal_list_remove_item(&orte_local_children, &child->super);
|
||||
|
||||
OBJ_DESTRUCT(&alert);
|
||||
}
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user