1
1

There is no reason for tools to have an async progress thread as they can loop the event library themselves. This has the added benefit of causing the tool to "block" while waiting for events so they don't use cpu.

Also, fix orte-submit so it appropriately handles --help option
Этот коммит содержится в:
Ralph Castain 2015-07-05 10:45:28 -07:00
родитель 4694b16256
Коммит 836f49597d
2 изменённых файлов: 36 добавлений и 18 удалений

Просмотреть файл

@ -77,18 +77,6 @@ int orte_ess_base_tool_setup(void)
orte_process_info.super.proc_arch = opal_local_arch;
opal_proc_local_set(&orte_process_info.super);
if (NULL != orte_process_info.my_hnp_uri) {
/* if we were given an HNP, then we want
* to look like an application as well as being a tool.
* Need to do this before opening the routed framework
* so it will do the right things.
*/
orte_process_info.proc_type |= ORTE_PROC_NON_MPI;
/* get a separate orte event base */
orte_event_base = opal_start_progress_thread("orte", true);
progress_thread_running = true;
orte_event_base_active = true;
}
/* open and setup the state machine */
if (ORTE_SUCCESS != (ret = mca_base_framework_open(&orte_state_base_framework, 0))) {
ORTE_ERROR_LOG(ret);

Просмотреть файл

@ -318,7 +318,7 @@ static opal_cmd_line_init_t cmd_line_init[] = {
&myglobals.run_as_root, OPAL_CMD_LINE_TYPE_BOOL,
"Allow execution as root (STRONGLY DISCOURAGED)" },
/* End of list */
/* End of list */
{ NULL, '\0', NULL, NULL, 0,
NULL, OPAL_CMD_LINE_TYPE_NULL, NULL }
};
@ -409,8 +409,8 @@ int main(int argc, char *argv[])
fprintf(stderr, "--------------------------------------------------------------------------\n");
exit(1);
}
/*
/*
* Since this process can now handle MCA/GMCA parameters, make sure to
* process them.
*/
@ -435,6 +435,32 @@ int main(int argc, char *argv[])
exit(1);
}
/* Check for help request */
if (myglobals.help) {
char *str, *args = NULL;
char *project_name = NULL;
opal_output(0, "GETTING HELP");
if (0 == strcmp(myglobals.basename, "mpirun")) {
project_name = "Open MPI";
} else {
project_name = "OpenRTE";
}
args = opal_cmd_line_get_usage_msg(&cmd_line);
opal_output(0, "CMD LINE %s", args);
str = opal_show_help_string("help-orterun.txt", "orterun:usage", false,
myglobals.basename, project_name, OPAL_VERSION,
myglobals.basename, args,
PACKAGE_BUGREPORT);
if (NULL != str) {
printf("%s", str);
free(str);
}
free(args);
/* If someone asks for help, that should be all we do */
exit(0);
}
/* Check for some "global" command line params */
parse_globals(argc, argv, &cmd_line);
@ -691,12 +717,16 @@ int main(int argc, char *argv[])
orte_rml.send_buffer_nb(ORTE_PROC_MY_HNP, req, ORTE_RML_TAG_DAEMON, orte_rml_send_callback, NULL);
// wait for response and unpack the status, jobid
ORTE_WAIT_FOR_COMPLETION(myspawn);
while (myspawn) {
opal_event_loop(orte_event_base, OPAL_EVLOOP_ONCE);
}
opal_output(0, "Job %s has launched", ORTE_JOBID_PRINT(jdata->jobid));
waiting:
ORTE_WAIT_FOR_COMPLETION(mywait);
while (mywait) {
opal_event_loop(orte_event_base, OPAL_EVLOOP_ONCE);
}
DONE:
/* cleanup and leave */
orte_finalize();