Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions ompi/mpi/tool/finalize.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,15 @@ int MPI_T_finalize (void)

if (0 == --mpit_init_count) {
(void) ompi_info_close_components ();

if ((!ompi_mpi_initialized || ompi_mpi_finalized) &&
(NULL != ompi_mpi_main_thread)) {
/* we are not between MPI_Init and MPI_Finalize so we
* have to free the ompi_mpi_main_thread */
OBJ_RELEASE(ompi_mpi_main_thread);
ompi_mpi_main_thread = NULL;
}

(void) opal_finalize_util ();
}

Expand Down
8 changes: 6 additions & 2 deletions ompi/runtime/ompi_mpi_init.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
* Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
* University Research and Technology
Expand All @@ -10,7 +11,7 @@
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2006-2013 Los Alamos National Security, LLC. All rights
* Copyright (c) 2006-2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2006-2009 University of Houston. All rights reserved.
* Copyright (c) 2008-2009 Sun Microsystems, Inc. All rights reserved.
Expand Down Expand Up @@ -342,7 +343,10 @@ void ompi_mpi_thread_level(int requested, int *provided)
ompi_mpi_thread_provided = *provided = requested;
}
}
ompi_mpi_main_thread = opal_thread_get_self();

if (!ompi_mpi_main_thread) {
ompi_mpi_main_thread = opal_thread_get_self();
}

ompi_mpi_thread_multiple = (ompi_mpi_thread_provided ==
MPI_THREAD_MULTIPLE);
Expand Down
34 changes: 29 additions & 5 deletions opal/mca/base/mca_base_var.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ static char *mca_base_var_file_prefix = NULL;
static char *mca_base_envar_file_prefix = NULL;
static char *mca_base_param_file_path = NULL;
static char *mca_base_env_list = NULL;
static char *mca_base_env_list_sep = ";";
#define MCA_BASE_ENV_LIST_SEP_DEFAULT ";"
static char *mca_base_env_list_sep = MCA_BASE_ENV_LIST_SEP_DEFAULT;
static char *mca_base_env_list_internal = NULL;
static bool mca_base_var_suppress_override_warning = false;
static opal_list_t mca_base_var_file_values;
Expand Down Expand Up @@ -273,6 +274,8 @@ int mca_base_var_init(void)
"Set SHELL env variables",
MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0, OPAL_INFO_LVL_3,
MCA_BASE_VAR_SCOPE_READONLY, &mca_base_env_list);

mca_base_env_list_sep = MCA_BASE_ENV_LIST_SEP_DEFAULT;
(void)mca_base_var_register ("opal", "mca", "base", "env_list_delimiter",
"Set SHELL env variables delimiter. Default: semicolon ';'",
MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0, OPAL_INFO_LVL_3,
Expand Down Expand Up @@ -430,6 +433,7 @@ static int mca_base_var_cache_files(bool rel_path_search)
if (OPAL_SUCCESS != ret) {
return ret;
}

mca_base_envar_files = strdup(mca_base_var_files);

(void) mca_base_var_register_synonym (ret, "opal", "mca", NULL, "param_files",
Expand Down Expand Up @@ -1131,11 +1135,15 @@ int mca_base_var_finalize(void)
if (NULL != mca_base_var_file_list) {
opal_argv_free(mca_base_var_file_list);
}
mca_base_var_file_list = NULL;

(void) mca_base_var_group_finalize ();
(void) mca_base_pvar_finalize ();

OBJ_DESTRUCT(&mca_base_var_index_hash);

free (mca_base_envar_files);
mca_base_envar_files = NULL;
}

/* All done */
Expand Down Expand Up @@ -1241,15 +1249,31 @@ static int fixup_files(char **file_list, char * path, bool rel_path_search, char

static int read_files(char *file_list, opal_list_t *file_values, char sep)
{
int i, count;
char **tmp = opal_argv_split(file_list, sep);
int i, count, ret;

if (!tmp) {
return OPAL_ERR_OUT_OF_RESOURCE;
}

if (mca_base_var_file_list) {
count = opal_argv_count (mca_base_var_file_list);
ret = opal_argv_insert (&mca_base_var_file_list, count, tmp);
if (OPAL_SUCCESS != ret) {
return ret;
}

opal_argv_free (tmp);
} else {
mca_base_var_file_list = tmp;
}

count = opal_argv_count(mca_base_var_file_list);

/* Iterate through all the files passed in -- read them in reverse
order so that we preserve unix/shell path-like semantics (i.e.,
the entries farthest to the left get precedence) */

mca_base_var_file_list = opal_argv_split(file_list, sep);
count = opal_argv_count(mca_base_var_file_list);

for (i = count - 1; i >= 0; --i) {
mca_base_parse_paramfile(mca_base_var_file_list[i], file_values);
}
Expand Down
1 change: 1 addition & 0 deletions opal/mca/btl/vader/btl_vader_component.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ static int mca_btl_vader_component_register (void)
"single_copy_mechanism", "Single copy mechanism to use (defaults to best available)",
MCA_BASE_VAR_TYPE_INT, new_enum, 0, MCA_BASE_VAR_FLAG_SETTABLE,
OPAL_INFO_LVL_3, MCA_BASE_VAR_SCOPE_GROUP, &mca_btl_vader_component.single_copy_mechanism);
OBJ_RELEASE(new_enum);

#if OPAL_BTL_VADER_HAVE_KNEM
/* Currently disabling DMA mode by default; it's not clear that this is useful in all applications and architectures. */
Expand Down
1 change: 1 addition & 0 deletions opal/mca/installdirs/base/installdirs_base_components.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ opal_installdirs_base_close(void)
free(opal_install_dirs.opaldatadir);
free(opal_install_dirs.opallibdir);
free(opal_install_dirs.opalincludedir);
memset (&opal_install_dirs, 0, sizeof (opal_install_dirs));

return mca_base_framework_components_close (&opal_installdirs_base_framework, NULL);
}
Expand Down
3 changes: 3 additions & 0 deletions opal/runtime/opal_finalize.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ opal_finalize_util(void)
/* finalize the class/object system */
opal_class_finalize();

free (opal_process_info.nodename);
opal_process_info.nodename = NULL;

return OPAL_SUCCESS;
}

Expand Down
10 changes: 5 additions & 5 deletions opal/runtime/opal_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,11 +303,6 @@ opal_init_util(int* pargc, char*** pargv)
goto return_error;
}

if (OPAL_SUCCESS != (ret = opal_net_init())) {
error = "opal_net_init";
goto return_error;
}

/* Setup the parameter system */
if (OPAL_SUCCESS != (ret = mca_base_var_init())) {
error = "mca_base_var_init";
Expand All @@ -320,6 +315,11 @@ opal_init_util(int* pargc, char*** pargv)
goto return_error;
}

if (OPAL_SUCCESS != (ret = opal_net_init())) {
error = "opal_net_init";
goto return_error;
}

/* pretty-print stack handlers */
if (OPAL_SUCCESS != (ret = opal_util_register_stackhandlers())) {
error = "opal_util_register_stackhandlers";
Expand Down
6 changes: 3 additions & 3 deletions opal/runtime/opal_params.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ int opal_register_params(void)
}

#if OPAL_ENABLE_TIMING
opal_timing_sync_file = NULL;
(void) mca_base_var_register ("opal", "opal", NULL, "timing_sync_file",
"Clock synchronisation information generated by mpisync tool. You don't need to touch this if you use mpirun_prof tool.",
MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0,
Expand All @@ -240,12 +241,14 @@ int opal_register_params(void)
opal_output(0, "Cannot read file %s containing clock synchronisation information\n", opal_timing_sync_file);
}

opal_timing_output = NULL;
(void) mca_base_var_register ("opal", "opal", NULL, "timing_output",
"The name of output file for timing information. If this parameter is not set then output will be directed into OPAL debug channel.",
MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0,
OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_ALL,
&opal_timing_output);

opal_timing_overhead = true;
(void) mca_base_var_register ("opal", "opal", NULL, "timing_overhead",
"Timing framework introduce additional overhead (malloc's mostly)."
" The time spend in such costly routines is measured and may be accounted"
Expand Down Expand Up @@ -280,9 +283,6 @@ int opal_register_params(void)

int opal_deregister_params(void)
{
opal_signal_string = NULL;
opal_net_private_ipv4 = NULL;
opal_set_max_sys_limits = NULL;
opal_register_done = false;

return OPAL_SUCCESS;
Expand Down
3 changes: 2 additions & 1 deletion orte/runtime/orte_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,8 @@ int orte_init(int* pargc, char*** pargv, orte_proc_type_t flags)
if (NULL != opal_process_info.nodename) {
free(opal_process_info.nodename);
}
opal_process_info.nodename = orte_process_info.nodename;
/* opal_finalize_util will call free on this pointer so set from strdup */
opal_process_info.nodename = strdup (orte_process_info.nodename);

/* setup the dstore framework */
if (ORTE_SUCCESS != (ret = mca_base_framework_open(&opal_dstore_base_framework, 0))) {
Expand Down