diff --git a/ompi/runtime/ompi_mpi_finalize.c b/ompi/runtime/ompi_mpi_finalize.c index 40a313a6b9..9bf22965c0 100644 --- a/ompi/runtime/ompi_mpi_finalize.c +++ b/ompi/runtime/ompi_mpi_finalize.c @@ -42,7 +42,6 @@ #include "opal/mca/base/base.h" #include "opal/util/show_help.h" #include "opal/sys/atomic.h" -#include "opal/mca/carto/base/base.h" #include "orte/util/proc_info.h" #include "orte/mca/oob/base/base.h" @@ -138,8 +137,6 @@ int ompi_mpi_finalize(void) opal_maffinity_base_close(); } - opal_carto_base_close(); - /* wait for everyone to reach this point This is a grpcomm barrier instead of an MPI barrier because an MPI barrier doesn't ensure that all messages have been transmitted diff --git a/ompi/runtime/ompi_mpi_init.c b/ompi/runtime/ompi_mpi_init.c index 73e8da0a47..12a2be7f62 100644 --- a/ompi/runtime/ompi_mpi_init.c +++ b/ompi/runtime/ompi_mpi_init.c @@ -39,7 +39,6 @@ #include "opal/util/num_procs.h" #include "opal/runtime/opal.h" #include "opal/event/event.h" -#include "opal/mca/carto/base/base.h" #include "orte/util/sys_info.h" #include "orte/util/proc_info.h" @@ -313,16 +312,6 @@ int ompi_mpi_init(int argc, char **argv, int requested, int *provided) } } - if (OPAL_SUCCESS != (ret = opal_carto_base_open())) { - error = "opal_carto_base_open"; - goto error; - } - - if (OPAL_SUCCESS != (ret = opal_carto_base_select())) { - error = "opal_carto_base_select"; - goto error; - } - /* initialize datatypes. This step should be done early as it will * create the local convertor and local arch used in the proc * init. diff --git a/opal/runtime/opal_finalize.c b/opal/runtime/opal_finalize.c index ae72421a6c..e412fee528 100644 --- a/opal/runtime/opal_finalize.c +++ b/opal/runtime/opal_finalize.c @@ -40,6 +40,7 @@ #include "opal/mca/paffinity/base/base.h" #include "opal/event/event.h" #include "opal/runtime/opal_progress.h" +#include "opal/mca/carto/base/base.h" #include "opal/runtime/opal_cr.h" #include "opal/mca/crs/base/base.h" @@ -57,6 +58,9 @@ opal_finalize_util(void) return OPAL_SUCCESS; } + /* close the carto framework */ + opal_carto_base_close(); + /* Clear out all the registered MCA params */ mca_base_param_finalize(); diff --git a/opal/runtime/opal_init.c b/opal/runtime/opal_init.c index e814fc11e5..baff724036 100644 --- a/opal/runtime/opal_init.c +++ b/opal/runtime/opal_init.c @@ -37,6 +37,7 @@ #include "opal/mca/timer/base/base.h" #include "opal/mca/memchecker/base/base.h" #include "opal/dss/dss.h" +#include "opal/mca/carto/base/base.h" #include "opal/runtime/opal_cr.h" #include "opal/mca/crs/base/base.h" @@ -334,6 +335,17 @@ opal_init(void) goto return_error; } + /* setup the carto framework */ + if (OPAL_SUCCESS != (ret = opal_carto_base_open())) { + error = "opal_carto_base_open"; + goto return_error; + } + + if (OPAL_SUCCESS != (ret = opal_carto_base_select())) { + error = "opal_carto_base_select"; + goto return_error; + } + /* * Need to start the event and progress engines if noone else is. * opal_cr_init uses the progress engine, so it is lumped together