r24976 wasn't quite right -- you now actually get a warning if you
specify btl_tcp_if_include because btl_tcp_if_exclude is defaulted to the loopback devices. This commit does a few things: * Introduce a new OPAL MCA base function: mca_base_param_check_exclusive_string(). It checks to see that the ''user'' does not set two MCA parameters that are mutually exclusive by checking the source of those MCS param values. * Use the above function in many BTLs (and the OOB TCP) to ensure that <foo>_if_include and <foo>_if_exclude are not both specified ''by the user''. * Re-arrange many of these BTLs to move their MCA registration code into a separate component_register() function (vs. the component_open() function). This code has been nominally reviewed and checked by Ralph, George, Terry, and Shiqing. This commit was SVN r25043. The following SVN revision numbers were found above: r24976 --> open-mpi/ompi@8f4ac54336
Этот коммит содержится в:
родитель
e3c869d83b
Коммит
1cbfb53801
@ -9,6 +9,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -127,16 +128,6 @@ struct mca_btl_mx_module_t {
|
|||||||
typedef struct mca_btl_mx_module_t mca_btl_mx_module_t;
|
typedef struct mca_btl_mx_module_t mca_btl_mx_module_t;
|
||||||
extern mca_btl_mx_module_t mca_btl_mx_module;
|
extern mca_btl_mx_module_t mca_btl_mx_module;
|
||||||
|
|
||||||
/**
|
|
||||||
* Register MX component parameters with the MCA framework
|
|
||||||
*/
|
|
||||||
extern int mca_btl_mx_component_open(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Any final cleanup before being unloaded.
|
|
||||||
*/
|
|
||||||
extern int mca_btl_mx_component_close(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MX component initialization.
|
* MX component initialization.
|
||||||
*
|
*
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -39,6 +40,11 @@
|
|||||||
#include "mx_internals/mx__driver_interface.h"
|
#include "mx_internals/mx__driver_interface.h"
|
||||||
#endif /* MX_HAVE_MAPPER_STATE */
|
#endif /* MX_HAVE_MAPPER_STATE */
|
||||||
|
|
||||||
|
static int mca_btl_mx_component_register(void);
|
||||||
|
static int mca_btl_mx_component_open(void);
|
||||||
|
static int mca_btl_mx_component_close(void);
|
||||||
|
|
||||||
|
|
||||||
mca_btl_mx_component_t mca_btl_mx_component = {
|
mca_btl_mx_component_t mca_btl_mx_component = {
|
||||||
{
|
{
|
||||||
/* First, the mca_base_component_t struct containing meta information
|
/* First, the mca_base_component_t struct containing meta information
|
||||||
@ -52,7 +58,9 @@ mca_btl_mx_component_t mca_btl_mx_component = {
|
|||||||
OMPI_MINOR_VERSION, /* MCA component minor version */
|
OMPI_MINOR_VERSION, /* MCA component minor version */
|
||||||
OMPI_RELEASE_VERSION, /* MCA component release version */
|
OMPI_RELEASE_VERSION, /* MCA component release version */
|
||||||
mca_btl_mx_component_open, /* component open */
|
mca_btl_mx_component_open, /* component open */
|
||||||
mca_btl_mx_component_close /* component close */
|
mca_btl_mx_component_close, /* component close */
|
||||||
|
NULL, /* component query */
|
||||||
|
mca_btl_mx_component_register, /* component register */
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* The component is checkpoint ready */
|
/* The component is checkpoint ready */
|
||||||
@ -64,20 +72,9 @@ mca_btl_mx_component_t mca_btl_mx_component = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* Called by MCA framework to open the component, registers
|
|
||||||
* component parameters.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int mca_btl_mx_component_open(void)
|
static int mca_btl_mx_component_register(void)
|
||||||
{
|
{
|
||||||
/* initialize state */
|
|
||||||
mca_btl_mx_component.mx_num_btls = 0;
|
|
||||||
mca_btl_mx_component.mx_btls = NULL;
|
|
||||||
mca_btl_mx_component.mx_use_unexpected = 0;
|
|
||||||
|
|
||||||
/* initialize objects */
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_mx_component.mx_procs, opal_list_t);
|
|
||||||
mca_base_param_reg_int( (mca_base_component_t*)&mca_btl_mx_component, "max_btls",
|
mca_base_param_reg_int( (mca_base_component_t*)&mca_btl_mx_component, "max_btls",
|
||||||
"Maximum number of accepted Myrinet cards",
|
"Maximum number of accepted Myrinet cards",
|
||||||
false, false, 8, &mca_btl_mx_component.mx_max_btls );
|
false, false, 8, &mca_btl_mx_component.mx_max_btls );
|
||||||
@ -164,6 +161,24 @@ int mca_btl_mx_component_open(void)
|
|||||||
mca_btl_base_param_register(&mca_btl_mx_component.super.btl_version,
|
mca_btl_base_param_register(&mca_btl_mx_component.super.btl_version,
|
||||||
&mca_btl_mx_module.super);
|
&mca_btl_mx_module.super);
|
||||||
|
|
||||||
|
return OMPI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called by MCA framework to open the component, registers
|
||||||
|
* component parameters.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int mca_btl_mx_component_open(void)
|
||||||
|
{
|
||||||
|
/* initialize state */
|
||||||
|
mca_btl_mx_component.mx_num_btls = 0;
|
||||||
|
mca_btl_mx_component.mx_btls = NULL;
|
||||||
|
mca_btl_mx_component.mx_use_unexpected = 0;
|
||||||
|
|
||||||
|
/* initialize objects */
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_mx_component.mx_procs, opal_list_t);
|
||||||
if( 0 == mca_btl_mx_component.mx_support_sharedmem )
|
if( 0 == mca_btl_mx_component.mx_support_sharedmem )
|
||||||
opal_setenv( "MX_DISABLE_SHMEM", "1", true, &environ );
|
opal_setenv( "MX_DISABLE_SHMEM", "1", true, &environ );
|
||||||
if( 0 == mca_btl_mx_component.mx_support_self )
|
if( 0 == mca_btl_mx_component.mx_support_self )
|
||||||
@ -178,7 +193,7 @@ int mca_btl_mx_component_open(void)
|
|||||||
* component cleanup - sanity checking of queue lengths
|
* component cleanup - sanity checking of queue lengths
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int mca_btl_mx_component_close(void)
|
static int mca_btl_mx_component_close(void)
|
||||||
{
|
{
|
||||||
if( NULL == mca_btl_mx_component.mx_btls )
|
if( NULL == mca_btl_mx_component.mx_btls )
|
||||||
return OMPI_SUCCESS;
|
return OMPI_SUCCESS;
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2006 Sandia National Laboratories. All rights
|
* Copyright (c) 2006 Sandia National Laboratories. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -163,20 +164,6 @@ struct mca_btl_ud_frag_t;
|
|||||||
extern mca_btl_ud_module_t mca_btl_ofud_module;
|
extern mca_btl_ud_module_t mca_btl_ofud_module;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Open the component; register UD/IB parameters with the MCA framework
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern int mca_btl_ud_component_open(void);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Any final cleanup before being unloaded.
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern int mca_btl_ud_component_close(void);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IB component initialization.
|
* IB component initialization.
|
||||||
*
|
*
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2006 Sandia National Laboratories. All rights
|
* Copyright (c) 2006 Sandia National Laboratories. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2008-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -49,6 +49,10 @@
|
|||||||
#include "btl_ofud_endpoint.h"
|
#include "btl_ofud_endpoint.h"
|
||||||
|
|
||||||
|
|
||||||
|
static int mca_btl_ud_component_register(void);
|
||||||
|
static int mca_btl_ud_component_open(void);
|
||||||
|
static int mca_btl_ud_component_close(void);
|
||||||
|
|
||||||
mca_btl_ud_component_t mca_btl_ofud_component = {
|
mca_btl_ud_component_t mca_btl_ofud_component = {
|
||||||
{
|
{
|
||||||
/* First, the mca_base_component_t struct containing meta information
|
/* First, the mca_base_component_t struct containing meta information
|
||||||
@ -61,7 +65,9 @@ mca_btl_ud_component_t mca_btl_ofud_component = {
|
|||||||
OMPI_MINOR_VERSION, /* MCA component minor version */
|
OMPI_MINOR_VERSION, /* MCA component minor version */
|
||||||
OMPI_RELEASE_VERSION, /* MCA component release version */
|
OMPI_RELEASE_VERSION, /* MCA component release version */
|
||||||
mca_btl_ud_component_open, /* component open */
|
mca_btl_ud_component_open, /* component open */
|
||||||
mca_btl_ud_component_close /* component close */
|
mca_btl_ud_component_close, /* component close */
|
||||||
|
NULL, /* component query */
|
||||||
|
mca_btl_ud_component_register, /* component register */
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* The component is not checkpoint ready */
|
/* The component is not checkpoint ready */
|
||||||
@ -108,22 +114,9 @@ static inline void mca_btl_ud_param_reg_int(const char* param_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
static int mca_btl_ud_component_register(void)
|
||||||
* Called by MCA framework to open the component, registers
|
|
||||||
* component parameters.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int mca_btl_ud_component_open(void)
|
|
||||||
{
|
{
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
/* initialize state */
|
|
||||||
mca_btl_ofud_component.num_btls = 0;
|
|
||||||
mca_btl_ofud_component.ud_btls = NULL;
|
|
||||||
|
|
||||||
/* initialize objects */
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_ofud_component.ud_lock, opal_mutex_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_ofud_component.ud_procs, opal_list_t);
|
|
||||||
|
|
||||||
/* register IB component parameters */
|
/* register IB component parameters */
|
||||||
mca_btl_ud_param_reg_int("max_btls",
|
mca_btl_ud_param_reg_int("max_btls",
|
||||||
@ -180,7 +173,7 @@ int mca_btl_ud_component_open(void)
|
|||||||
mca_btl_ud_param_reg_int("bandwidth",
|
mca_btl_ud_param_reg_int("bandwidth",
|
||||||
"Approximate maximum bandwidth of interconnect",
|
"Approximate maximum bandwidth of interconnect",
|
||||||
800, (int*)&mca_btl_ofud_module.super.btl_bandwidth);
|
800, (int*)&mca_btl_ofud_module.super.btl_bandwidth);
|
||||||
|
|
||||||
mca_btl_ofud_module.super.btl_eager_limit -= sizeof(mca_btl_ud_header_t);
|
mca_btl_ofud_module.super.btl_eager_limit -= sizeof(mca_btl_ud_header_t);
|
||||||
mca_btl_ofud_module.super.btl_max_send_size -= sizeof(mca_btl_ud_header_t);
|
mca_btl_ofud_module.super.btl_max_send_size -= sizeof(mca_btl_ud_header_t);
|
||||||
|
|
||||||
@ -188,11 +181,43 @@ int mca_btl_ud_component_open(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called by MCA framework to open the component
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int mca_btl_ud_component_open(void)
|
||||||
|
{
|
||||||
|
/* initialize state */
|
||||||
|
mca_btl_ofud_component.num_btls = 0;
|
||||||
|
mca_btl_ofud_component.ud_btls = NULL;
|
||||||
|
|
||||||
|
/* initialize objects */
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_ofud_component.ud_lock, opal_mutex_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_ofud_component.ud_procs, opal_list_t);
|
||||||
|
|
||||||
|
/* if_include and if_exclude need to be mutually exclusive */
|
||||||
|
if (OPAL_SUCCESS !=
|
||||||
|
mca_base_param_check_exclusive_string(
|
||||||
|
mca_btl_ofud_component.super.btl_version.mca_type_name,
|
||||||
|
mca_btl_ofud_component.super.btl_version.mca_component_name,
|
||||||
|
"if_include",
|
||||||
|
mca_btl_ofud_component.super.btl_version.mca_type_name,
|
||||||
|
mca_btl_ofud_component.super.btl_version.mca_component_name,
|
||||||
|
"if_exclude")) {
|
||||||
|
/* Return ERR_NOT_AVAILABLE so that a warning message about
|
||||||
|
"open" failing is not printed */
|
||||||
|
return OMPI_ERR_NOT_AVAILABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OMPI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Component cleanup
|
* Component cleanup
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int mca_btl_ud_component_close(void)
|
static int mca_btl_ud_component_close(void)
|
||||||
{
|
{
|
||||||
OBJ_DESTRUCT(&mca_btl_ofud_component.ud_lock);
|
OBJ_DESTRUCT(&mca_btl_ofud_component.ud_lock);
|
||||||
OBJ_DESTRUCT(&mca_btl_ofud_component.ud_procs);
|
OBJ_DESTRUCT(&mca_btl_ofud_component.ud_procs);
|
||||||
|
@ -101,6 +101,7 @@ const char *ibv_get_sysfs_path(void);
|
|||||||
/*
|
/*
|
||||||
* Local functions
|
* Local functions
|
||||||
*/
|
*/
|
||||||
|
static int btl_openib_component_register(void);
|
||||||
static int btl_openib_component_open(void);
|
static int btl_openib_component_open(void);
|
||||||
static int btl_openib_component_close(void);
|
static int btl_openib_component_close(void);
|
||||||
static mca_btl_base_module_t **btl_openib_component_init(int*, bool, bool);
|
static mca_btl_base_module_t **btl_openib_component_init(int*, bool, bool);
|
||||||
@ -124,7 +125,9 @@ mca_btl_openib_component_t mca_btl_openib_component = {
|
|||||||
OMPI_MINOR_VERSION, /* MCA component minor version */
|
OMPI_MINOR_VERSION, /* MCA component minor version */
|
||||||
OMPI_RELEASE_VERSION, /* MCA component release version */
|
OMPI_RELEASE_VERSION, /* MCA component release version */
|
||||||
btl_openib_component_open, /* component open */
|
btl_openib_component_open, /* component open */
|
||||||
btl_openib_component_close /* component close */
|
btl_openib_component_close, /* component close */
|
||||||
|
NULL, /* component query */
|
||||||
|
btl_openib_component_register, /* component register */
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* The component is checkpoint ready */
|
/* The component is checkpoint ready */
|
||||||
@ -136,14 +139,40 @@ mca_btl_openib_component_t mca_btl_openib_component = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
static int btl_openib_component_register(void)
|
||||||
* Called by MCA framework to open the component, registers
|
|
||||||
* component parameters.
|
|
||||||
*/
|
|
||||||
int btl_openib_component_open(void)
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
/* register IB component parameters */
|
||||||
|
ret = btl_openib_register_mca_params();
|
||||||
|
|
||||||
|
mca_btl_openib_component.max_send_size =
|
||||||
|
mca_btl_openib_module.super.btl_max_send_size;
|
||||||
|
mca_btl_openib_component.eager_limit =
|
||||||
|
mca_btl_openib_module.super.btl_eager_limit;
|
||||||
|
|
||||||
|
/* if_include and if_exclude need to be mutually exclusive */
|
||||||
|
if (OPAL_SUCCESS !=
|
||||||
|
mca_base_param_check_exclusive_string(
|
||||||
|
mca_btl_openib_component.super.btl_version.mca_type_name,
|
||||||
|
mca_btl_openib_component.super.btl_version.mca_component_name,
|
||||||
|
"if_include",
|
||||||
|
mca_btl_openib_component.super.btl_version.mca_type_name,
|
||||||
|
mca_btl_openib_component.super.btl_version.mca_component_name,
|
||||||
|
"if_exclude")) {
|
||||||
|
/* Return ERR_NOT_AVAILABLE so that a warning message about
|
||||||
|
"open" failing is not printed */
|
||||||
|
return OMPI_ERR_NOT_AVAILABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OMPI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called by MCA framework to open the component
|
||||||
|
*/
|
||||||
|
static int btl_openib_component_open(void)
|
||||||
|
{
|
||||||
#if OPAL_HAVE_THREADS
|
#if OPAL_HAVE_THREADS
|
||||||
opal_mutex_t *lock = &mca_btl_openib_component.srq_manager.lock;
|
opal_mutex_t *lock = &mca_btl_openib_component.srq_manager.lock;
|
||||||
opal_hash_table_t *srq_addr_table = &mca_btl_openib_component.srq_manager.srq_addr_table;
|
opal_hash_table_t *srq_addr_table = &mca_btl_openib_component.srq_manager.srq_addr_table;
|
||||||
@ -164,16 +193,8 @@ int btl_openib_component_open(void)
|
|||||||
/* initialize objects */
|
/* initialize objects */
|
||||||
OBJ_CONSTRUCT(&mca_btl_openib_component.ib_procs, opal_list_t);
|
OBJ_CONSTRUCT(&mca_btl_openib_component.ib_procs, opal_list_t);
|
||||||
|
|
||||||
/* register IB component parameters */
|
|
||||||
ret = btl_openib_register_mca_params();
|
|
||||||
|
|
||||||
mca_btl_openib_component.max_send_size =
|
|
||||||
mca_btl_openib_module.super.btl_max_send_size;
|
|
||||||
mca_btl_openib_component.eager_limit =
|
|
||||||
mca_btl_openib_module.super.btl_eager_limit;
|
|
||||||
|
|
||||||
srand48(getpid() * time(NULL));
|
srand48(getpid() * time(NULL));
|
||||||
return ret;
|
return OMPI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -120,16 +121,6 @@ extern mca_btl_sctp_module_t mca_btl_sctp_module;
|
|||||||
#define CLOSE_THE_SOCKET(socket) close(socket)
|
#define CLOSE_THE_SOCKET(socket) close(socket)
|
||||||
#endif /* defined(__WINDOWS__) */
|
#endif /* defined(__WINDOWS__) */
|
||||||
|
|
||||||
/**
|
|
||||||
* Register SCTP component parameters with the MCA framework
|
|
||||||
*/
|
|
||||||
extern int mca_btl_sctp_component_open(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Any final cleanup before being unloaded.
|
|
||||||
*/
|
|
||||||
extern int mca_btl_sctp_component_close(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SCTP component initialization.
|
* SCTP component initialization.
|
||||||
*
|
*
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2008-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
|
* Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -66,6 +66,11 @@
|
|||||||
#include "btl_sctp_recv_handler.h"
|
#include "btl_sctp_recv_handler.h"
|
||||||
#include "btl_sctp_component.h"
|
#include "btl_sctp_component.h"
|
||||||
|
|
||||||
|
static int mca_btl_sctp_component_register(void);
|
||||||
|
static int mca_btl_sctp_component_open(void);
|
||||||
|
static int mca_btl_sctp_component_close(void);
|
||||||
|
|
||||||
|
|
||||||
mca_btl_sctp_component_t mca_btl_sctp_component = {
|
mca_btl_sctp_component_t mca_btl_sctp_component = {
|
||||||
{
|
{
|
||||||
/* First, the mca_base_component_t struct containing meta information
|
/* First, the mca_base_component_t struct containing meta information
|
||||||
@ -79,7 +84,9 @@ mca_btl_sctp_component_t mca_btl_sctp_component = {
|
|||||||
OMPI_MINOR_VERSION, /* MCA component minor version */
|
OMPI_MINOR_VERSION, /* MCA component minor version */
|
||||||
OMPI_RELEASE_VERSION, /* MCA component release version */
|
OMPI_RELEASE_VERSION, /* MCA component release version */
|
||||||
mca_btl_sctp_component_open, /* component open */
|
mca_btl_sctp_component_open, /* component open */
|
||||||
mca_btl_sctp_component_close /* component close */
|
mca_btl_sctp_component_close, /* component close */
|
||||||
|
NULL,
|
||||||
|
mca_btl_sctp_component_register, /* component register */
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* Whether the component is checkpointable or not */
|
/* Whether the component is checkpointable or not */
|
||||||
@ -164,47 +171,8 @@ static void mca_btl_sctp_component_recv_handler(int, short, void*); /* for 1-1 *
|
|||||||
/* mca_btl_sctp_recv_handler(int, short, void*) for 1-many is in btl_sctp_recv_handler.h */
|
/* mca_btl_sctp_recv_handler(int, short, void*) for 1-many is in btl_sctp_recv_handler.h */
|
||||||
|
|
||||||
|
|
||||||
/*
|
static int mca_btl_sctp_component_register(void)
|
||||||
* Called by MCA framework to open the component, registers
|
|
||||||
* component parameters.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int mca_btl_sctp_component_open(void)
|
|
||||||
{
|
{
|
||||||
#ifdef __WINDOWS__
|
|
||||||
WSADATA win_sock_data;
|
|
||||||
if (WSAStartup(MAKEWORD(2,2), &win_sock_data) != 0) {
|
|
||||||
BTL_ERROR(("failed to initialise windows sockets:%d", WSAGetLastError()));
|
|
||||||
return OMPI_ERROR;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* initialize state */
|
|
||||||
mca_btl_sctp_component.sctp_listen_sd = -1;
|
|
||||||
/* TODO different sd for ipv6 */
|
|
||||||
mca_btl_sctp_component.sctp_num_btls=0;
|
|
||||||
/* addr_count */
|
|
||||||
mca_btl_sctp_component.sctp_btls=NULL;
|
|
||||||
|
|
||||||
/* initialize objects */
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_lock, opal_mutex_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_procs, opal_hash_table_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_events, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_frag_eager, ompi_free_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_frag_max, ompi_free_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_frag_user, ompi_free_list_t);
|
|
||||||
opal_hash_table_init(&mca_btl_sctp_component.sctp_procs, 256);
|
|
||||||
#if MCA_BTL_SCTP_DONT_USE_HASH
|
|
||||||
/* TODO make this only allocate how much it needs to. Currently
|
|
||||||
* allocates 256 (to match sctp_procs). recvr_proc_table and
|
|
||||||
* sender_proc_table are malloc'd in mca_btl_sctp_component_init.
|
|
||||||
*/
|
|
||||||
recvr_proc_table = NULL;
|
|
||||||
sender_proc_table = NULL;
|
|
||||||
#else
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_assocID_hash, opal_hash_table_t);
|
|
||||||
opal_hash_table_init(&mca_btl_sctp_component.sctp_assocID_hash, 256);
|
|
||||||
#endif
|
|
||||||
/* register SCTP component parameters */
|
/* register SCTP component parameters */
|
||||||
/* num links */
|
/* num links */
|
||||||
mca_btl_sctp_component.sctp_if_include =
|
mca_btl_sctp_component.sctp_if_include =
|
||||||
@ -254,7 +222,63 @@ int mca_btl_sctp_component_open(void)
|
|||||||
mca_btl_base_param_register(&mca_btl_sctp_component.super.btl_version,
|
mca_btl_base_param_register(&mca_btl_sctp_component.super.btl_version,
|
||||||
&mca_btl_sctp_module.super);
|
&mca_btl_sctp_module.super);
|
||||||
|
|
||||||
/* disable_family */
|
return OMPI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called by MCA framework to open the component
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int mca_btl_sctp_component_open(void)
|
||||||
|
{
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
WSADATA win_sock_data;
|
||||||
|
if (WSAStartup(MAKEWORD(2,2), &win_sock_data) != 0) {
|
||||||
|
BTL_ERROR(("failed to initialise windows sockets:%d", WSAGetLastError()));
|
||||||
|
return OMPI_ERROR;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* initialize state */
|
||||||
|
mca_btl_sctp_component.sctp_listen_sd = -1;
|
||||||
|
/* TODO different sd for ipv6 */
|
||||||
|
mca_btl_sctp_component.sctp_num_btls=0;
|
||||||
|
/* addr_count */
|
||||||
|
mca_btl_sctp_component.sctp_btls=NULL;
|
||||||
|
|
||||||
|
/* initialize objects */
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_lock, opal_mutex_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_procs, opal_hash_table_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_events, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_frag_eager, ompi_free_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_frag_max, ompi_free_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_frag_user, ompi_free_list_t);
|
||||||
|
opal_hash_table_init(&mca_btl_sctp_component.sctp_procs, 256);
|
||||||
|
#if MCA_BTL_SCTP_DONT_USE_HASH
|
||||||
|
/* TODO make this only allocate how much it needs to. Currently
|
||||||
|
* allocates 256 (to match sctp_procs). recvr_proc_table and
|
||||||
|
* sender_proc_table are malloc'd in mca_btl_sctp_component_init.
|
||||||
|
*/
|
||||||
|
recvr_proc_table = NULL;
|
||||||
|
sender_proc_table = NULL;
|
||||||
|
#else
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_sctp_component.sctp_assocID_hash, opal_hash_table_t);
|
||||||
|
opal_hash_table_init(&mca_btl_sctp_component.sctp_assocID_hash, 256);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* if_include and if_exclude need to be mutually exclusive */
|
||||||
|
if (OPAL_SUCCESS !=
|
||||||
|
mca_base_param_check_exclusive_string(
|
||||||
|
mca_btl_sctp_component.super.btl_version.mca_type_name,
|
||||||
|
mca_btl_sctp_component.super.btl_version.mca_component_name,
|
||||||
|
"if_include",
|
||||||
|
mca_btl_sctp_component.super.btl_version.mca_type_name,
|
||||||
|
mca_btl_sctp_component.super.btl_version.mca_component_name,
|
||||||
|
"if_exclude")) {
|
||||||
|
/* Return ERR_NOT_AVAILABLE so that a warning message about
|
||||||
|
"open" failing is not printed */
|
||||||
|
return OMPI_ERR_NOT_AVAILABLE;
|
||||||
|
}
|
||||||
|
|
||||||
/* setup receive buffer */
|
/* setup receive buffer */
|
||||||
if(0 == mca_btl_sctp_recv_handler_initbuf()) {
|
if(0 == mca_btl_sctp_recv_handler_initbuf()) {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2010-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -128,16 +128,6 @@ extern mca_btl_tcp_module_t mca_btl_tcp_module;
|
|||||||
#define CLOSE_THE_SOCKET(socket) close(socket)
|
#define CLOSE_THE_SOCKET(socket) close(socket)
|
||||||
#endif /* defined(__WINDOWS__) */
|
#endif /* defined(__WINDOWS__) */
|
||||||
|
|
||||||
/**
|
|
||||||
* Register TCP component parameters with the MCA framework
|
|
||||||
*/
|
|
||||||
extern int mca_btl_tcp_component_open(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Any final cleanup before being unloaded.
|
|
||||||
*/
|
|
||||||
extern int mca_btl_tcp_component_close(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TCP component initialization.
|
* TCP component initialization.
|
||||||
*
|
*
|
||||||
|
@ -73,6 +73,14 @@
|
|||||||
#include "btl_tcp_endpoint.h"
|
#include "btl_tcp_endpoint.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Local functions
|
||||||
|
*/
|
||||||
|
static int mca_btl_tcp_component_register(void);
|
||||||
|
static int mca_btl_tcp_component_open(void);
|
||||||
|
static int mca_btl_tcp_component_close(void);
|
||||||
|
|
||||||
|
|
||||||
mca_btl_tcp_component_t mca_btl_tcp_component = {
|
mca_btl_tcp_component_t mca_btl_tcp_component = {
|
||||||
{
|
{
|
||||||
/* First, the mca_base_component_t struct containing meta information
|
/* First, the mca_base_component_t struct containing meta information
|
||||||
@ -86,7 +94,9 @@ mca_btl_tcp_component_t mca_btl_tcp_component = {
|
|||||||
OMPI_MINOR_VERSION, /* MCA component minor version */
|
OMPI_MINOR_VERSION, /* MCA component minor version */
|
||||||
OMPI_RELEASE_VERSION, /* MCA component release version */
|
OMPI_RELEASE_VERSION, /* MCA component release version */
|
||||||
mca_btl_tcp_component_open, /* component open */
|
mca_btl_tcp_component_open, /* component open */
|
||||||
mca_btl_tcp_component_close /* component close */
|
mca_btl_tcp_component_close, /* component close */
|
||||||
|
NULL, /* component query */
|
||||||
|
mca_btl_tcp_component_register, /* component register */
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* The component is checkpoint ready */
|
/* The component is checkpoint ready */
|
||||||
@ -170,34 +180,9 @@ static void mca_btl_tcp_component_accept_handler(int, short, void*);
|
|||||||
* component parameters.
|
* component parameters.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int mca_btl_tcp_component_open(void)
|
static int mca_btl_tcp_component_register(void)
|
||||||
{
|
{
|
||||||
char* message;
|
char* message;
|
||||||
#ifdef __WINDOWS__
|
|
||||||
WSADATA win_sock_data;
|
|
||||||
if( WSAStartup(MAKEWORD(2,2), &win_sock_data) != 0 ) {
|
|
||||||
BTL_ERROR(("failed to initialise windows sockets:%d", WSAGetLastError()));
|
|
||||||
return OMPI_ERROR;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* initialize state */
|
|
||||||
mca_btl_tcp_component.tcp_listen_sd = -1;
|
|
||||||
#if OPAL_WANT_IPV6
|
|
||||||
mca_btl_tcp_component.tcp6_listen_sd = -1;
|
|
||||||
#endif
|
|
||||||
mca_btl_tcp_component.tcp_num_btls=0;
|
|
||||||
mca_btl_tcp_component.tcp_addr_count = 0;
|
|
||||||
mca_btl_tcp_component.tcp_btls=NULL;
|
|
||||||
|
|
||||||
/* initialize objects */
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_lock, opal_mutex_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_procs, opal_hash_table_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_events, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_frag_eager, ompi_free_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_frag_max, ompi_free_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_frag_user, ompi_free_list_t);
|
|
||||||
opal_hash_table_init(&mca_btl_tcp_component.tcp_procs, 256);
|
|
||||||
|
|
||||||
/* register TCP component parameters */
|
/* register TCP component parameters */
|
||||||
mca_btl_tcp_component.tcp_num_links =
|
mca_btl_tcp_component.tcp_num_links =
|
||||||
@ -206,6 +191,7 @@ int mca_btl_tcp_component_open(void)
|
|||||||
mca_btl_tcp_param_register_string("if_include", "Comma-delimited list of devices or CIDR notation of networks to use for MPI communication (e.g., \"eth0,eth1\" or \"192.168.0.0/16,10.1.4.0/24\"). Mutually exclusive with btl_tcp_if_exclude.", "");
|
mca_btl_tcp_param_register_string("if_include", "Comma-delimited list of devices or CIDR notation of networks to use for MPI communication (e.g., \"eth0,eth1\" or \"192.168.0.0/16,10.1.4.0/24\"). Mutually exclusive with btl_tcp_if_exclude.", "");
|
||||||
mca_btl_tcp_component.tcp_if_exclude =
|
mca_btl_tcp_component.tcp_if_exclude =
|
||||||
mca_btl_tcp_param_register_string("if_exclude", "Comma-delimited list of devices or CIDR notation of networks to NOT use for MPI communication -- all devices not matching these specifications will be used (e.g., \"eth0,eth1\" or \"192.168.0.0/16,10.1.4.0/24\"). Mutually exclusive with btl_tcp_if_include.", "lo,sppp");
|
mca_btl_tcp_param_register_string("if_exclude", "Comma-delimited list of devices or CIDR notation of networks to NOT use for MPI communication -- all devices not matching these specifications will be used (e.g., \"eth0,eth1\" or \"192.168.0.0/16,10.1.4.0/24\"). Mutually exclusive with btl_tcp_if_include.", "lo,sppp");
|
||||||
|
|
||||||
mca_btl_tcp_component.tcp_free_list_num =
|
mca_btl_tcp_component.tcp_free_list_num =
|
||||||
mca_btl_tcp_param_register_int ("free_list_num", NULL, 8);
|
mca_btl_tcp_param_register_int ("free_list_num", NULL, 8);
|
||||||
mca_btl_tcp_component.tcp_free_list_max =
|
mca_btl_tcp_component.tcp_free_list_max =
|
||||||
@ -262,6 +248,7 @@ int mca_btl_tcp_component_open(void)
|
|||||||
(0x1 << 16) - mca_btl_tcp_component.tcp6_port_min - 1);
|
(0x1 << 16) - mca_btl_tcp_component.tcp6_port_min - 1);
|
||||||
free(message);
|
free(message);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mca_btl_tcp_module.super.btl_exclusivity = MCA_BTL_EXCLUSIVITY_LOW + 100;
|
mca_btl_tcp_module.super.btl_exclusivity = MCA_BTL_EXCLUSIVITY_LOW + 100;
|
||||||
mca_btl_tcp_module.super.btl_eager_limit = 64*1024;
|
mca_btl_tcp_module.super.btl_eager_limit = 64*1024;
|
||||||
mca_btl_tcp_module.super.btl_rndv_eager_limit = 64*1024;
|
mca_btl_tcp_module.super.btl_rndv_eager_limit = 64*1024;
|
||||||
@ -276,6 +263,7 @@ int mca_btl_tcp_component_open(void)
|
|||||||
MCA_BTL_FLAGS_HETEROGENEOUS_RDMA;
|
MCA_BTL_FLAGS_HETEROGENEOUS_RDMA;
|
||||||
mca_btl_tcp_module.super.btl_bandwidth = 100;
|
mca_btl_tcp_module.super.btl_bandwidth = 100;
|
||||||
mca_btl_tcp_module.super.btl_latency = 100;
|
mca_btl_tcp_module.super.btl_latency = 100;
|
||||||
|
|
||||||
mca_btl_base_param_register(&mca_btl_tcp_component.super.btl_version,
|
mca_btl_base_param_register(&mca_btl_tcp_component.super.btl_version,
|
||||||
&mca_btl_tcp_module.super);
|
&mca_btl_tcp_module.super);
|
||||||
|
|
||||||
@ -332,12 +320,57 @@ int mca_btl_tcp_component_open(void)
|
|||||||
return OMPI_SUCCESS;
|
return OMPI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int mca_btl_tcp_component_open(void)
|
||||||
|
{
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
WSADATA win_sock_data;
|
||||||
|
if( WSAStartup(MAKEWORD(2,2), &win_sock_data) != 0 ) {
|
||||||
|
BTL_ERROR(("failed to initialise windows sockets:%d", WSAGetLastError()));
|
||||||
|
return OMPI_ERROR;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* initialize state */
|
||||||
|
mca_btl_tcp_component.tcp_listen_sd = -1;
|
||||||
|
#if OPAL_WANT_IPV6
|
||||||
|
mca_btl_tcp_component.tcp6_listen_sd = -1;
|
||||||
|
#endif
|
||||||
|
mca_btl_tcp_component.tcp_num_btls=0;
|
||||||
|
mca_btl_tcp_component.tcp_addr_count = 0;
|
||||||
|
mca_btl_tcp_component.tcp_btls=NULL;
|
||||||
|
|
||||||
|
/* initialize objects */
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_lock, opal_mutex_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_procs, opal_hash_table_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_events, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_frag_eager, ompi_free_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_frag_max, ompi_free_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_btl_tcp_component.tcp_frag_user, ompi_free_list_t);
|
||||||
|
opal_hash_table_init(&mca_btl_tcp_component.tcp_procs, 256);
|
||||||
|
|
||||||
|
/* if_include and if_exclude need to be mutually exclusive */
|
||||||
|
if (OPAL_SUCCESS !=
|
||||||
|
mca_base_param_check_exclusive_string(
|
||||||
|
mca_btl_tcp_component.super.btl_version.mca_type_name,
|
||||||
|
mca_btl_tcp_component.super.btl_version.mca_component_name,
|
||||||
|
"if_include",
|
||||||
|
mca_btl_tcp_component.super.btl_version.mca_type_name,
|
||||||
|
mca_btl_tcp_component.super.btl_version.mca_component_name,
|
||||||
|
"if_exclude")) {
|
||||||
|
/* Return ERR_NOT_AVAILABLE so that a warning message about
|
||||||
|
"open" failing is not printed */
|
||||||
|
return OMPI_ERR_NOT_AVAILABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OMPI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* module cleanup - sanity checking of queue lengths
|
* module cleanup - sanity checking of queue lengths
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int mca_btl_tcp_component_close(void)
|
static int mca_btl_tcp_component_close(void)
|
||||||
{
|
{
|
||||||
opal_list_item_t* item;
|
opal_list_item_t* item;
|
||||||
opal_list_item_t* next;
|
opal_list_item_t* next;
|
||||||
@ -633,21 +666,6 @@ static int mca_btl_tcp_component_create_instances(void)
|
|||||||
|
|
||||||
mca_btl_tcp_component.tcp_addr_count = if_count;
|
mca_btl_tcp_component.tcp_addr_count = if_count;
|
||||||
|
|
||||||
/* It's an error to specify both tcp_if_include and
|
|
||||||
tcp_if_exclude */
|
|
||||||
if ((NULL != mca_btl_tcp_component.tcp_if_include &&
|
|
||||||
strlen(mca_btl_tcp_component.tcp_if_include) > 0) &&
|
|
||||||
(NULL != mca_btl_tcp_component.tcp_if_exclude &&
|
|
||||||
strlen(mca_btl_tcp_component.tcp_if_exclude) > 0)) {
|
|
||||||
orte_show_help("help-mpi-btl-tcp.txt",
|
|
||||||
"both if_include and if_exclude specified",
|
|
||||||
true, orte_process_info.nodename,
|
|
||||||
mca_btl_tcp_component.tcp_if_include,
|
|
||||||
mca_btl_tcp_component.tcp_if_exclude);
|
|
||||||
ret = OMPI_ERR_BAD_PARAM;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* if the user specified an interface list - use these exclusively */
|
/* if the user specified an interface list - use these exclusively */
|
||||||
argv = include = split_and_resolve(&mca_btl_tcp_component.tcp_if_include,
|
argv = include = split_and_resolve(&mca_btl_tcp_component.tcp_if_include,
|
||||||
"include");
|
"include");
|
||||||
|
@ -18,19 +18,6 @@ value will be ignored.
|
|||||||
Value: %s
|
Value: %s
|
||||||
Message: %s
|
Message: %s
|
||||||
#
|
#
|
||||||
[both if_include and if_exclude specified]
|
|
||||||
WARNING: Values for both the btl_tcp_if_include and btl_tcp_if_exclude
|
|
||||||
MCA parameters were specified. These two parameters are mututally
|
|
||||||
exclusive; you can only specify one or the other.
|
|
||||||
|
|
||||||
The TCP BTL will exclude itself from this run; your MPI job *may* end
|
|
||||||
up aborting with messages about how MPI processes are not reachable
|
|
||||||
from each other.
|
|
||||||
|
|
||||||
Local host: %s
|
|
||||||
if_include value: %s
|
|
||||||
if_exclude value: %s
|
|
||||||
#
|
|
||||||
[invalid minimum port]
|
[invalid minimum port]
|
||||||
WARNING: An invalid value was given for the btl_tcp_port_min_%s. Legal
|
WARNING: An invalid value was given for the btl_tcp_port_min_%s. Legal
|
||||||
values are in the range [1 .. 2^16-1]. This value will be ignored
|
values are in the range [1 .. 2^16-1]. This value will be ignored
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2006-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2006-2009 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2006-2009 Mellanox Technologies. All rights reserved.
|
||||||
* Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
@ -75,6 +75,7 @@
|
|||||||
/*
|
/*
|
||||||
* Local functions
|
* Local functions
|
||||||
*/
|
*/
|
||||||
|
static int btl_wv_component_register(void);
|
||||||
static int btl_wv_component_open(void);
|
static int btl_wv_component_open(void);
|
||||||
static int btl_wv_component_close(void);
|
static int btl_wv_component_close(void);
|
||||||
static mca_btl_base_module_t **btl_wv_component_init(int*, bool, bool);
|
static mca_btl_base_module_t **btl_wv_component_init(int*, bool, bool);
|
||||||
@ -99,7 +100,9 @@ mca_btl_wv_component_t mca_btl_wv_component = {
|
|||||||
OMPI_MINOR_VERSION, /* MCA component minor version */
|
OMPI_MINOR_VERSION, /* MCA component minor version */
|
||||||
OMPI_RELEASE_VERSION, /* MCA component release version */
|
OMPI_RELEASE_VERSION, /* MCA component release version */
|
||||||
btl_wv_component_open, /* component open */
|
btl_wv_component_open, /* component open */
|
||||||
btl_wv_component_close /* component close */
|
btl_wv_component_close, /* component close */
|
||||||
|
NULL, /* component query */
|
||||||
|
btl_wv_component_register, /* component register */
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* The component is checkpoint ready */
|
/* The component is checkpoint ready */
|
||||||
@ -123,13 +126,27 @@ static enum wv_mtu wv_convert_mtu(UINT32 mtu)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int btl_wv_component_register(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* register IB component parameters */
|
||||||
|
ret = btl_wv_register_mca_params();
|
||||||
|
|
||||||
|
mca_btl_wv_component.max_send_size =
|
||||||
|
mca_btl_wv_module.super.btl_max_send_size;
|
||||||
|
mca_btl_wv_component.eager_limit =
|
||||||
|
mca_btl_wv_module.super.btl_eager_limit;
|
||||||
|
|
||||||
|
return OMPI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Called by MCA framework to open the component, registers
|
* Called by MCA framework to open the component, registers
|
||||||
* component parameters.
|
* component parameters.
|
||||||
*/
|
*/
|
||||||
int btl_wv_component_open(void)
|
static int btl_wv_component_open(void)
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
/* initialize state */
|
/* initialize state */
|
||||||
mca_btl_wv_component.ib_num_btls = 0;
|
mca_btl_wv_component.ib_num_btls = 0;
|
||||||
mca_btl_wv_component.wv_btls = NULL;
|
mca_btl_wv_component.wv_btls = NULL;
|
||||||
@ -141,14 +158,6 @@ int btl_wv_component_open(void)
|
|||||||
/* initialize objects */
|
/* initialize objects */
|
||||||
OBJ_CONSTRUCT(&mca_btl_wv_component.ib_procs, opal_list_t);
|
OBJ_CONSTRUCT(&mca_btl_wv_component.ib_procs, opal_list_t);
|
||||||
|
|
||||||
/* register IB component parameters */
|
|
||||||
ret = btl_wv_register_mca_params();
|
|
||||||
|
|
||||||
mca_btl_wv_component.max_send_size =
|
|
||||||
mca_btl_wv_module.super.btl_max_send_size;
|
|
||||||
mca_btl_wv_component.eager_limit =
|
|
||||||
mca_btl_wv_module.super.btl_eager_limit;
|
|
||||||
|
|
||||||
srand48(getpid() * time(NULL));
|
srand48(getpid() * time(NULL));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# University of Stuttgart. All rights reserved.
|
# University of Stuttgart. All rights reserved.
|
||||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
# Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
|
# Copyright (c) 2008-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
# $COPYRIGHT$
|
# $COPYRIGHT$
|
||||||
#
|
#
|
||||||
# Additional copyrights may follow
|
# Additional copyrights may follow
|
||||||
@ -42,3 +42,13 @@ file. Deprecated MCA parameters should be avoided; they may disappear
|
|||||||
in future releases.
|
in future releases.
|
||||||
|
|
||||||
Deprecated parameter: %s
|
Deprecated parameter: %s
|
||||||
|
#
|
||||||
|
[mutually exclusive params]
|
||||||
|
Two mutually-exclusive MCA parameters were specified. This can result
|
||||||
|
in undefined behavior, such as ignoring the components that the MCA
|
||||||
|
parameters are supposed to affect.
|
||||||
|
|
||||||
|
1st MCA parameter: %s
|
||||||
|
Source of value: %s
|
||||||
|
2nd MCA parameter: %s
|
||||||
|
Source of value: %s
|
||||||
|
@ -2304,3 +2304,117 @@ int mca_base_param_find_string_name(const char *type,
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *source_name(mca_base_param_source_t source,
|
||||||
|
const char *filename)
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
|
||||||
|
switch (source) {
|
||||||
|
case MCA_BASE_PARAM_SOURCE_DEFAULT:
|
||||||
|
return strdup("default value");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MCA_BASE_PARAM_SOURCE_ENV:
|
||||||
|
return strdup("command line or environment variable");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MCA_BASE_PARAM_SOURCE_FILE:
|
||||||
|
asprintf(&ret, "file (%s)", filename);
|
||||||
|
return ret;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MCA_BASE_PARAM_SOURCE_OVERRIDE:
|
||||||
|
return strdup("internal override");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return strdup("unknown (!)");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int mca_base_param_check_exclusive_string(const char *type_a,
|
||||||
|
const char *component_a,
|
||||||
|
const char *param_a,
|
||||||
|
const char *type_b,
|
||||||
|
const char *component_b,
|
||||||
|
const char *param_b)
|
||||||
|
{
|
||||||
|
int i, ret;
|
||||||
|
mca_base_param_source_t source_a, source_b;
|
||||||
|
char *filename_a, *filename_b;
|
||||||
|
|
||||||
|
i = mca_base_param_find(type_a, component_a, param_a);
|
||||||
|
if (i < 0) {
|
||||||
|
return OPAL_ERR_NOT_FOUND;
|
||||||
|
}
|
||||||
|
ret = mca_base_param_lookup_source(i, &source_a, &filename_a);
|
||||||
|
if (OPAL_SUCCESS != ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = mca_base_param_find(type_b, component_b, param_b);
|
||||||
|
if (i < 0) {
|
||||||
|
return OPAL_ERR_NOT_FOUND;
|
||||||
|
}
|
||||||
|
ret = mca_base_param_lookup_source(i, &source_b, &filename_b);
|
||||||
|
if (OPAL_SUCCESS != ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MCA_BASE_PARAM_SOURCE_DEFAULT != source_a &&
|
||||||
|
MCA_BASE_PARAM_SOURCE_DEFAULT != source_b) {
|
||||||
|
size_t len;
|
||||||
|
char *str_a, *str_b, *name_a, *name_b;
|
||||||
|
|
||||||
|
/* Form cosmetic string names for A */
|
||||||
|
str_a = source_name(source_a, filename_a);
|
||||||
|
len = 5;
|
||||||
|
if (NULL != type_a) len += strlen(type_a);
|
||||||
|
if (NULL != component_a) len += strlen(component_a);
|
||||||
|
if (NULL != param_a) len += strlen(param_a);
|
||||||
|
name_a = calloc(1, len);
|
||||||
|
if (NULL == name_a) {
|
||||||
|
return OPAL_ERR_OUT_OF_RESOURCE;
|
||||||
|
}
|
||||||
|
if (NULL != type_a) {
|
||||||
|
strncat(name_a, type_a, len);
|
||||||
|
strncat(name_a, "_", len);
|
||||||
|
}
|
||||||
|
if (NULL != component_a) strncat(name_a, component_a, len);
|
||||||
|
strncat(name_a, "_", len);
|
||||||
|
strncat(name_a, param_a, len);
|
||||||
|
|
||||||
|
/* Form cosmetic string names for B */
|
||||||
|
str_b = source_name(source_b, filename_b);
|
||||||
|
len = 5;
|
||||||
|
if (NULL != type_b) len += strlen(type_b);
|
||||||
|
if (NULL != component_b) len += strlen(component_b);
|
||||||
|
if (NULL != param_b) len += strlen(param_b);
|
||||||
|
name_b = calloc(1, len);
|
||||||
|
if (NULL == name_b) {
|
||||||
|
return OPAL_ERR_OUT_OF_RESOURCE;
|
||||||
|
}
|
||||||
|
if (NULL != type_b) {
|
||||||
|
strncat(name_b, type_b, len);
|
||||||
|
strncat(name_b, "_", len);
|
||||||
|
}
|
||||||
|
if (NULL != component_b) strncat(name_b, component_b, len);
|
||||||
|
strncat(name_b, "_", len);
|
||||||
|
strncat(name_b, param_b, len);
|
||||||
|
|
||||||
|
/* Print it all out */
|
||||||
|
opal_show_help("help-mca-param.txt",
|
||||||
|
"mutually exclusive params",
|
||||||
|
true, name_a, str_a, name_b, str_b);
|
||||||
|
|
||||||
|
/* Free the temp strings */
|
||||||
|
free(str_a);
|
||||||
|
free(name_a);
|
||||||
|
free(str_b);
|
||||||
|
free(name_b);
|
||||||
|
return OPAL_ERR_BAD_PARAM;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OPAL_SUCCESS;
|
||||||
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2008-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -715,6 +715,41 @@ OPAL_DECLSPEC int mca_base_param_find_string_name(const char *type,
|
|||||||
char **env,
|
char **env,
|
||||||
char **current_value);
|
char **current_value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that two MCA parameters were not both set to non-default
|
||||||
|
* values.
|
||||||
|
*
|
||||||
|
* @param type_a [in] Framework name of parameter A (string).
|
||||||
|
* @param component_a [in] Component name of parameter A (string).
|
||||||
|
* @param param_a [in] Parameter name of parameter A (string.
|
||||||
|
* @param type_b [in] Framework name of parameter A (string).
|
||||||
|
* @param component_b [in] Component name of parameter A (string).
|
||||||
|
* @param param_b [in] Parameter name of parameter A (string.
|
||||||
|
*
|
||||||
|
* This function is useful for checking that the user did not set both
|
||||||
|
* of 2 mutually-exclusive MCA parameters.
|
||||||
|
*
|
||||||
|
* This function will print an opal_show_help() message and return
|
||||||
|
* OPAL_ERR_BAD_PARAM if it finds that the two parameters both have
|
||||||
|
* value sources that are not MCA_BASE_PARAM_SOURCE_DEFAULT. This
|
||||||
|
* means that both parameters have been set by the user (i.e., they're
|
||||||
|
* not default values).
|
||||||
|
*
|
||||||
|
* Note that opal_show_help() allows itself to be hooked, so if this
|
||||||
|
* happens after the aggregated orte_show_help() system is
|
||||||
|
* initialized, the messages will be aggregated (w00t).
|
||||||
|
*
|
||||||
|
* @returns OPAL_ERR_BAD_PARAM if the two parameters have sources that
|
||||||
|
* are not MCA_BASE_PARAM_SOURCE_DEFAULT.
|
||||||
|
* @returns OPAL_SUCCESS otherwise.
|
||||||
|
*/
|
||||||
|
OPAL_DECLSPEC int mca_base_param_check_exclusive_string(const char *type_a,
|
||||||
|
const char *component_a,
|
||||||
|
const char *param_a,
|
||||||
|
const char *type_b,
|
||||||
|
const char *component_b,
|
||||||
|
const char *param_b);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the "internal" flag on an MCA parameter to true or false.
|
* Set the "internal" flag on an MCA parameter to true or false.
|
||||||
*
|
*
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2006-2010 Los Alamos National Security, LLC.
|
* Copyright (c) 2006-2010 Los Alamos National Security, LLC.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2009 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2009-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -98,6 +98,9 @@ OBJ_CLASS_INSTANCE(
|
|||||||
* Local utility functions
|
* Local utility functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static int mca_oob_tcp_component_register(void);
|
||||||
|
static int mca_oob_tcp_component_open(void);
|
||||||
|
static int mca_oob_tcp_component_close(void);
|
||||||
static int mca_oob_tcp_create_listen(int *target_sd, unsigned short *port, uint16_t af_family);
|
static int mca_oob_tcp_create_listen(int *target_sd, unsigned short *port, uint16_t af_family);
|
||||||
static int mca_oob_tcp_create_listen_thread(void);
|
static int mca_oob_tcp_create_listen_thread(void);
|
||||||
static void mca_oob_tcp_recv_handler(int sd, short flags, void* user);
|
static void mca_oob_tcp_recv_handler(int sd, short flags, void* user);
|
||||||
@ -126,7 +129,9 @@ mca_oob_tcp_component_t mca_oob_tcp_component = {
|
|||||||
ORTE_MINOR_VERSION,
|
ORTE_MINOR_VERSION,
|
||||||
ORTE_RELEASE_VERSION,
|
ORTE_RELEASE_VERSION,
|
||||||
mca_oob_tcp_component_open, /* component open */
|
mca_oob_tcp_component_open, /* component open */
|
||||||
mca_oob_tcp_component_close /* component close */
|
mca_oob_tcp_component_close, /* component close */
|
||||||
|
NULL, /* component query */
|
||||||
|
mca_oob_tcp_component_register, /* component register */
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* The component is checkpoint ready */
|
/* The component is checkpoint ready */
|
||||||
@ -153,49 +158,19 @@ mca_oob_t mca_oob_tcp = {
|
|||||||
mca_oob_tcp_ft_event
|
mca_oob_tcp_ft_event
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
static int mca_oob_tcp_component_register(void)
|
||||||
* Initialize global variables used w/in this module.
|
|
||||||
*/
|
|
||||||
int mca_oob_tcp_component_open(void)
|
|
||||||
{
|
{
|
||||||
int tmp, value = 0;
|
int tmp, value = 0;
|
||||||
char *listen_type, *str = NULL;
|
char *listen_type, *str = NULL;
|
||||||
|
|
||||||
#ifdef __WINDOWS__
|
|
||||||
WSADATA win_sock_data;
|
|
||||||
if (WSAStartup(MAKEWORD(2,2), &win_sock_data) != 0) {
|
|
||||||
opal_output (0, "mca_oob_tcp_component_init: failed to initialise windows sockets: error %d\n", WSAGetLastError());
|
|
||||||
return ORTE_ERROR;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mca_base_param_reg_int(&mca_oob_tcp_component.super.oob_base,
|
mca_base_param_reg_int(&mca_oob_tcp_component.super.oob_base,
|
||||||
"verbose",
|
"verbose",
|
||||||
"Verbose level for the OOB tcp component",
|
"Verbose level for the OOB tcp component",
|
||||||
false, false,
|
false, false,
|
||||||
0,
|
0,
|
||||||
&value);
|
&value);
|
||||||
mca_oob_tcp_output_handle = opal_output_open(NULL);
|
|
||||||
opal_output_set_verbosity(mca_oob_tcp_output_handle, value);
|
opal_output_set_verbosity(mca_oob_tcp_output_handle, value);
|
||||||
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_peer_list, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_peers, opal_hash_table_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_peer_names, opal_hash_table_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_peer_free, opal_free_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_msgs, opal_free_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_lock, opal_mutex_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_events, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_msg_post, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_msg_recv, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_msg_completed, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_match_lock, opal_mutex_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_match_cond, opal_condition_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_available_devices, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_listen_thread, opal_thread_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_pending_connections, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_connections_return, opal_list_t);
|
|
||||||
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_connections_lock, opal_mutex_t);
|
|
||||||
|
|
||||||
/* register oob module parameters */
|
/* register oob module parameters */
|
||||||
mca_base_param_reg_int(&mca_oob_tcp_component.super.oob_base,
|
mca_base_param_reg_int(&mca_oob_tcp_component.super.oob_base,
|
||||||
"peer_limit",
|
"peer_limit",
|
||||||
@ -313,10 +288,6 @@ int mca_oob_tcp_component_open(void)
|
|||||||
mca_oob_tcp_component.tcp_listen_thread_tv.tv_sec = tmp / (1000);
|
mca_oob_tcp_component.tcp_listen_thread_tv.tv_sec = tmp / (1000);
|
||||||
mca_oob_tcp_component.tcp_listen_thread_tv.tv_usec = (tmp % 1000) * 1000;
|
mca_oob_tcp_component.tcp_listen_thread_tv.tv_usec = (tmp % 1000) * 1000;
|
||||||
|
|
||||||
mca_oob_tcp_component.tcp_listen_thread_num_sockets = 0;
|
|
||||||
mca_oob_tcp_component.tcp_listen_thread_sds[0] = -1;
|
|
||||||
mca_oob_tcp_component.tcp_listen_thread_sds[1] = -1;
|
|
||||||
|
|
||||||
mca_base_param_reg_string(&mca_oob_tcp_component.super.oob_base,
|
mca_base_param_reg_string(&mca_oob_tcp_component.super.oob_base,
|
||||||
"static_ports", "Static ports for daemons and procs (IPv4)",
|
"static_ports", "Static ports for daemons and procs (IPv4)",
|
||||||
false, false,
|
false, false,
|
||||||
@ -407,11 +378,65 @@ int mca_oob_tcp_component_open(void)
|
|||||||
mca_oob_tcp_component.tcp6_listen_sd = -1;
|
mca_oob_tcp_component.tcp6_listen_sd = -1;
|
||||||
#endif /* OPAL_WANT_IPV6 */
|
#endif /* OPAL_WANT_IPV6 */
|
||||||
|
|
||||||
|
return ORTE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize global variables used w/in this module.
|
||||||
|
*/
|
||||||
|
static int mca_oob_tcp_component_open(void)
|
||||||
|
{
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
WSADATA win_sock_data;
|
||||||
|
if (WSAStartup(MAKEWORD(2,2), &win_sock_data) != 0) {
|
||||||
|
opal_output (0, "mca_oob_tcp_component_init: failed to initialise windows sockets: error %d\n", WSAGetLastError());
|
||||||
|
return ORTE_ERROR;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
mca_oob_tcp_output_handle = opal_output_open(NULL);
|
||||||
|
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_peer_list, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_peers, opal_hash_table_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_peer_names, opal_hash_table_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_peer_free, opal_free_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_msgs, opal_free_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_lock, opal_mutex_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_events, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_msg_post, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_msg_recv, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_msg_completed, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_match_lock, opal_mutex_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_match_cond, opal_condition_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_available_devices, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_listen_thread, opal_thread_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_pending_connections, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_connections_return, opal_list_t);
|
||||||
|
OBJ_CONSTRUCT(&mca_oob_tcp_component.tcp_connections_lock, opal_mutex_t);
|
||||||
|
|
||||||
|
mca_oob_tcp_component.tcp_listen_thread_num_sockets = 0;
|
||||||
|
mca_oob_tcp_component.tcp_listen_thread_sds[0] = -1;
|
||||||
|
mca_oob_tcp_component.tcp_listen_thread_sds[1] = -1;
|
||||||
|
|
||||||
/* initialize state */
|
/* initialize state */
|
||||||
mca_oob_tcp_component.tcp_shutdown = false;
|
mca_oob_tcp_component.tcp_shutdown = false;
|
||||||
mca_oob_tcp_component.tcp_listen_sd = -1;
|
mca_oob_tcp_component.tcp_listen_sd = -1;
|
||||||
mca_oob_tcp_component.tcp_match_count = 0;
|
mca_oob_tcp_component.tcp_match_count = 0;
|
||||||
|
|
||||||
|
/* if_include and if_exclude need to be mutually exclusive */
|
||||||
|
if (OPAL_SUCCESS !=
|
||||||
|
mca_base_param_check_exclusive_string(
|
||||||
|
mca_oob_tcp_component.super.oob_base.mca_type_name,
|
||||||
|
mca_oob_tcp_component.super.oob_base.mca_component_name,
|
||||||
|
"if_include",
|
||||||
|
mca_oob_tcp_component.super.oob_base.mca_type_name,
|
||||||
|
mca_oob_tcp_component.super.oob_base.mca_component_name,
|
||||||
|
"if_exclude")) {
|
||||||
|
/* Return ERR_NOT_AVAILABLE so that a warning message about
|
||||||
|
"open" failing is not printed */
|
||||||
|
return ORTE_ERR_NOT_AVAILABLE;
|
||||||
|
}
|
||||||
|
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,7 +444,7 @@ int mca_oob_tcp_component_open(void)
|
|||||||
* Cleanup of global variables used by this module.
|
* Cleanup of global variables used by this module.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int mca_oob_tcp_component_close(void)
|
static int mca_oob_tcp_component_close(void)
|
||||||
{
|
{
|
||||||
opal_list_item_t *item;
|
opal_list_item_t *item;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2006-2007 Los Alamos National Security, LLC.
|
* Copyright (c) 2006-2007 Los Alamos National Security, LLC.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2010-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -64,8 +64,6 @@ extern mca_oob_t mca_oob_tcp;
|
|||||||
/*
|
/*
|
||||||
* standard component functions
|
* standard component functions
|
||||||
*/
|
*/
|
||||||
int mca_oob_tcp_component_open(void);
|
|
||||||
int mca_oob_tcp_component_close(void);
|
|
||||||
mca_oob_t* mca_oob_tcp_component_init(int* priority);
|
mca_oob_t* mca_oob_tcp_component_init(int* priority);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user