e2ebd1efcc
This commit was SVN r10720.
84 строки
2.8 KiB
C
84 строки
2.8 KiB
C
/*
|
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
* University Research and Technology
|
|
* Corporation. All rights reserved.
|
|
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
* of Tennessee Research Foundation. All rights
|
|
* reserved.
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
* University of Stuttgart. All rights reserved.
|
|
* Copyright (c) 2004-2006 The Regents of the University of California.
|
|
* All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
|
|
#include "ompi_config.h"
|
|
#include <stdio.h>
|
|
#ifdef HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
#endif /* HAVE_UNISTD_H */
|
|
#include "ompi/mca/bml/bml.h"
|
|
#include "ompi/mca/bml/base/base.h"
|
|
#include "ompi/mca/btl/base/base.h"
|
|
#include "ompi/mca/bml/base/static-components.h"
|
|
#include "opal/mca/base/base.h"
|
|
|
|
opal_list_t mca_bml_base_components_available;
|
|
|
|
#if OMPI_ENABLE_DEBUG_RELIABILITY
|
|
double mca_bml_base_error_rate_floor;
|
|
double mca_bml_base_error_rate_ceiling;
|
|
int mca_bml_base_error_count;
|
|
#endif
|
|
|
|
int mca_bml_base_open( void ) {
|
|
|
|
if(OMPI_SUCCESS !=
|
|
mca_base_components_open("bml", 0, mca_bml_base_static_components,
|
|
&mca_bml_base_components_available,
|
|
true)) {
|
|
return OMPI_ERROR;
|
|
}
|
|
|
|
#if OMPI_ENABLE_DEBUG_RELIABILITY
|
|
do {
|
|
int param, value;
|
|
|
|
mca_base_param_register_int("bml", NULL, "error_rate_floor", "error_rate_floor", 0);
|
|
param = mca_base_param_find("bml", NULL, "error_rate_floor");
|
|
mca_base_param_lookup_int(param, &value);
|
|
mca_bml_base_error_rate_floor = value;
|
|
|
|
mca_base_param_register_int("bml", NULL, "error_rate_ceiling", "error_rate_ceiling", 0);
|
|
param = mca_base_param_find("bml", NULL, "error_rate_ceiling");
|
|
mca_base_param_lookup_int(param, &value);
|
|
mca_bml_base_error_rate_ceiling = value;
|
|
|
|
|
|
mca_base_param_register_int("bml", NULL, "srand", "srand", 1);
|
|
param = mca_base_param_find("bml", NULL, "srand");
|
|
mca_base_param_lookup_int(param, &value);
|
|
|
|
/* seed random number generator */
|
|
if(value) {
|
|
struct timeval tv;
|
|
gettimeofday(&tv, NULL);
|
|
srand(getpid() * tv.tv_usec);
|
|
}
|
|
|
|
/* initialize count */
|
|
if(mca_bml_base_error_rate_ceiling > 0
|
|
&& mca_bml_base_error_rate_floor <= mca_bml_base_error_rate_ceiling) {
|
|
mca_bml_base_error_count = (int) ((mca_bml_base_error_rate_ceiling * rand())/(RAND_MAX+1.0));
|
|
}
|
|
} while (0);
|
|
#endif
|
|
return mca_btl_base_open();
|
|
}
|
|
|