Some cleanup of the tmpdir session directory specifications. Remove the --tmpdir option from orterun as it was confusing. Create an orte_local_tmpdir_base mca param in its place. Clarify the role of the local vs remote vs global tmpdir base params, and ensure that you don't set conflicting options.
Remove the OMPI_PREFIX_ENV environmental variable as that was totally confusing as a way of setting a tmpdir base location. This commit was SVN r25941.
Этот коммит содержится в:
родитель
4c0d24ff9a
Коммит
d7d8a8cdf7
@ -43,7 +43,7 @@ static bool passed_thru = false;
|
|||||||
int orte_register_params(void)
|
int orte_register_params(void)
|
||||||
{
|
{
|
||||||
int value;
|
int value;
|
||||||
char *strval;
|
char *strval, *strval1, *strval2;
|
||||||
|
|
||||||
/* only go thru this once - mpirun calls it twice, which causes
|
/* only go thru this once - mpirun calls it twice, which causes
|
||||||
* any error messages to show up twice
|
* any error messages to show up twice
|
||||||
@ -73,23 +73,65 @@ int orte_register_params(void)
|
|||||||
(int) true, &value);
|
(int) true, &value);
|
||||||
orte_help_want_aggregate = OPAL_INT_TO_BOOL(value);
|
orte_help_want_aggregate = OPAL_INT_TO_BOOL(value);
|
||||||
|
|
||||||
|
/* LOOK FOR A TMP DIRECTORY BASE */
|
||||||
|
/* Several options are provided to cover a range of possibilities:
|
||||||
|
*
|
||||||
|
* (a) all processes need to use a specified location as the base
|
||||||
|
* for tmp directories
|
||||||
|
* (b) daemons on remote nodes need to use a specified location, but
|
||||||
|
* one different from that used by mpirun
|
||||||
|
* (c) mpirun needs to use a specified location, but one different
|
||||||
|
* from that used on remote nodes
|
||||||
|
*/
|
||||||
mca_base_param_reg_string_name("orte", "tmpdir_base",
|
mca_base_param_reg_string_name("orte", "tmpdir_base",
|
||||||
"Base of the session directory tree",
|
"Base of the session directory tree to be used by all processes",
|
||||||
false, false, NULL, &(orte_process_info.tmpdir_base));
|
false, false, NULL, &strval);
|
||||||
|
|
||||||
|
mca_base_param_reg_string_name("orte", "local_tmpdir_base",
|
||||||
|
"Base of the session directory tree to be used by orterun/mpirun",
|
||||||
|
false, false, NULL, &strval1);
|
||||||
|
|
||||||
mca_base_param_reg_string_name("orte", "remote_tmpdir_base",
|
mca_base_param_reg_string_name("orte", "remote_tmpdir_base",
|
||||||
"Base of the session directory tree on remote nodes, if required to be different from head node",
|
"Base of the session directory tree on remote nodes, if required to be different from head node",
|
||||||
false, false, NULL, &strval);
|
false, false, NULL, &strval2);
|
||||||
/* orterun will pickup the value and forward it along, but must not
|
|
||||||
* use it in its own work. So only a daemon needs to get it, and the
|
/* if a global tmpdir was specified, then we do not allow specification
|
||||||
* daemon will pass it down to its application procs. Note that orterun
|
* of the local or remote values to avoid confusion
|
||||||
* will pass -its- value to any procs local to it
|
|
||||||
*/
|
*/
|
||||||
if (ORTE_PROC_IS_DAEMON && NULL != strval) {
|
if (NULL != strval &&
|
||||||
|
(NULL != strval1 || NULL != strval2)) {
|
||||||
|
opal_output(orte_clean_output,
|
||||||
|
"------------------------------------------------------------------\n"
|
||||||
|
"The MCA param orte_tmpdir_base was specified, which sets the base\n"
|
||||||
|
"of the temporary directory tree for all procs. However, values for\n"
|
||||||
|
"the local and/or remote tmpdir base were also given. This can lead\n"
|
||||||
|
"to confusion and is therefore not allowed. Please specify either a\n"
|
||||||
|
"global tmpdir base OR a local/remote tmpdir base value\n"
|
||||||
|
"------------------------------------------------------------------");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL != strval) {
|
||||||
if (NULL != orte_process_info.tmpdir_base) {
|
if (NULL != orte_process_info.tmpdir_base) {
|
||||||
free(orte_process_info.tmpdir_base);
|
free(orte_process_info.tmpdir_base);
|
||||||
}
|
}
|
||||||
orte_process_info.tmpdir_base = strval;
|
orte_process_info.tmpdir_base = strval;
|
||||||
|
} else if (ORTE_PROC_IS_HNP && NULL != strval1) {
|
||||||
|
/* orterun will pickup the value for its own use */
|
||||||
|
if (NULL != orte_process_info.tmpdir_base) {
|
||||||
|
free(orte_process_info.tmpdir_base);
|
||||||
|
}
|
||||||
|
orte_process_info.tmpdir_base = strval1;
|
||||||
|
} else if (ORTE_PROC_IS_DAEMON && NULL != strval2) {
|
||||||
|
/* orterun will pickup the value and forward it along, but must not
|
||||||
|
* use it in its own work. So only a daemon needs to get it, and the
|
||||||
|
* daemon will pass it down to its application procs. Note that orterun
|
||||||
|
* will pass -its- value to any procs local to it
|
||||||
|
*/
|
||||||
|
if (NULL != orte_process_info.tmpdir_base) {
|
||||||
|
free(orte_process_info.tmpdir_base);
|
||||||
|
}
|
||||||
|
orte_process_info.tmpdir_base = strval2;
|
||||||
}
|
}
|
||||||
|
|
||||||
mca_base_param_reg_string_name("orte", "no_session_dirs",
|
mca_base_param_reg_string_name("orte", "no_session_dirs",
|
||||||
|
@ -462,10 +462,6 @@ static opal_cmd_line_init_t cmd_line_init[] = {
|
|||||||
NULL, OPAL_CMD_LINE_TYPE_BOOL,
|
NULL, OPAL_CMD_LINE_TYPE_BOOL,
|
||||||
"Enable debugging of OpenRTE" },
|
"Enable debugging of OpenRTE" },
|
||||||
|
|
||||||
{ NULL, NULL, NULL, '\0', "tmpdir", "tmpdir", 1,
|
|
||||||
&orte_process_info.tmpdir_base, OPAL_CMD_LINE_TYPE_STRING,
|
|
||||||
"Set the root for the session directory tree for orterun ONLY" },
|
|
||||||
|
|
||||||
{ "orte", "do_not", "launch", '\0', "do-not-launch", "do-not-launch", 0,
|
{ "orte", "do_not", "launch", '\0', "do-not-launch", "do-not-launch", 0,
|
||||||
NULL, OPAL_CMD_LINE_TYPE_BOOL,
|
NULL, OPAL_CMD_LINE_TYPE_BOOL,
|
||||||
"Perform all necessary operations to prepare to launch the application, but do not actually launch it" },
|
"Perform all necessary operations to prepare to launch the application, but do not actually launch it" },
|
||||||
|
@ -291,9 +291,6 @@ orte_session_dir_get_name(char **fulldirpath,
|
|||||||
else if (NULL != orte_process_info.tmpdir_base) { /* stored value */
|
else if (NULL != orte_process_info.tmpdir_base) { /* stored value */
|
||||||
prefix = strdup(orte_process_info.tmpdir_base);
|
prefix = strdup(orte_process_info.tmpdir_base);
|
||||||
}
|
}
|
||||||
else if( NULL != getenv("OMPI_PREFIX_ENV") ) { /* OMPI Environment var */
|
|
||||||
prefix = strdup(getenv("OMPI_PREFIX_ENV"));
|
|
||||||
}
|
|
||||||
else { /* General Environment var */
|
else { /* General Environment var */
|
||||||
prefix = strdup(opal_tmp_directory());
|
prefix = strdup(opal_tmp_directory());
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user