Fix the app_context problem.
NOTE: JEFF SHOULD CHECK THIS! I found that orterun was not tracking the index number of the app_contexts it was creating. Hence, the app_context->idx field was always sitting at zero. This index is used by the mapper to decide which app_context to use for each process - thus, with the value of each index being zero, the mapper only used the first app_context that was created. All others were ignored. Not sure when this might have gotten changed. Could be it was a problem that always existed, but didn't get exposed until something else was changed. Anyway, it seems to work now - could stand further testing. This commit was SVN r9389.
Этот коммит содержится в:
родитель
d9dc534c08
Коммит
2a18ebd9e1
@ -842,6 +842,9 @@ static int parse_locals(int argc, char* argv[])
|
||||
|
||||
app = OBJ_NEW(orte_app_context_t);
|
||||
rc = create_app(temp_argc, temp_argv, &app, &made_app, &env);
|
||||
/** keep track of the number of apps - point this app_context to that index */
|
||||
app->idx = app_num;
|
||||
app_num++;
|
||||
if (ORTE_SUCCESS != rc) {
|
||||
/* Assume that the error message has already been
|
||||
printed; no need to cleanup -- we can just
|
||||
@ -869,6 +872,8 @@ static int parse_locals(int argc, char* argv[])
|
||||
if (opal_argv_count(temp_argv) > 1) {
|
||||
app = OBJ_NEW(orte_app_context_t);
|
||||
rc = create_app(temp_argc, temp_argv, &app, &made_app, &env);
|
||||
app->idx = app_num;
|
||||
app_num++;
|
||||
if (ORTE_SUCCESS != rc) {
|
||||
/* Assume that the error message has already been printed;
|
||||
no need to cleanup -- we can just exit */
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user