1
1
openmpi/ompi/runtime/ompi_mpi_params.c

115 строки
3.7 KiB
C
Исходник Обычный вид История

/*
* Copyright (c) 2004-2005 The Trustees of Indiana University.
* All rights reserved.
* Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
* All rights reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include "include/constants.h"
#include "ompi/runtime/mpiruntime.h"
#include "ompi/runtime/params.h"
#include "opal/util/output.h"
#include "mca/base/mca_base_param.h"
/*
* Global variables
*
* As a deviation from the norm, ompi_mpi_param_check is also
* extern'ed in src/mpi/interface/c/bindings.h because it is already
* included in all MPI function imlementation files
*
* The values below are the default values.
*/
bool ompi_mpi_param_check = true;
bool ompi_debug_show_handle_leaks = false;
bool ompi_debug_no_free_handles = false;
int ompi_mpi_register_params(void)
{
int param_check_param;
int show_leaks_param;
int no_free_param;
int value;
/* Whether we want MPI API function parameter checking or not */
param_check_param =
mca_base_param_register_int("mpi", NULL, "param_check", NULL,
MPI_PARAM_CHECK);
mca_base_param_lookup_int(param_check_param, &value);
ompi_mpi_param_check = (bool) value;
if (ompi_mpi_param_check) {
value = 0;
if (MPI_PARAM_CHECK) {
value = 1;
}
if (0 == value) {
opal_output(0, "WARNING: MCA parameter mpi_param_check set to true, but parameter checking");
opal_output(0, "WARNING: has been compiled out of Open MPI. mpi_param_check value ignored.");
ompi_mpi_param_check = false;
}
}
/*
* This string is going to be used in src/util/showstackframe.c
*/
mca_base_param_register_string("mpi", NULL, "signal", NULL, NULL);
/*
* opal_progress: decide whether to yield and the event library
* tick rate
*/
mca_base_param_register_int("mpi", NULL, "yield_when_idle", NULL, -1);
mca_base_param_register_int("mpi", NULL, "event_tick_rate", NULL, -1);
/* Whether or not to show MPI handle leaks */
show_leaks_param =
mca_base_param_register_int("mpi", NULL, "show_handle_leaks", NULL,
(int) ompi_debug_show_handle_leaks);
mca_base_param_lookup_int(show_leaks_param, &value);
ompi_debug_show_handle_leaks = (bool) value;
/* Whether or not to free MPI handles. Useless without run-time
param checking, so implicitly set that to true if we don't want
to free the handles. */
no_free_param =
mca_base_param_register_int("mpi", NULL, "no_free_handles", NULL,
(int) ompi_debug_no_free_handles);
mca_base_param_lookup_int(no_free_param, &value);
ompi_debug_no_free_handles = (bool) value;
if (ompi_debug_no_free_handles) {
ompi_mpi_param_check = true;
value = 0;
if (MPI_PARAM_CHECK) {
value = 1;
}
if (0 == value) {
opal_output(0, "WARNING: MCA parameter mpi_no_free_handles set to true, but MPI");
opal_output(0, "WARNING: parameter checking has been compiled out of Open MPI.");
opal_output(0, "WARNING: mpi_no_free_handles is therefore only partially effective!");
}
}
/* All done */
return OMPI_SUCCESS;
}