* checkpoint so Galen can move the bmi tree
This commit was SVN r6216.
Этот коммит содержится в:
родитель
212183ba5c
Коммит
611e09d749
@ -151,58 +151,54 @@ AC_DEFUN([MCA_CONFIGURE_STUB],[
|
||||
[Use the Red Storm implementation or Portals])
|
||||
AM_CONDITIONAL([BMI_PORTALS_REDSTORM], [test "$BMI_PORTALS_REDSTORM" = "1"])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([frag-table-id],
|
||||
[BMI_PORTALS_FRAG_TABLE_ID], [1],
|
||||
[Portals table id to use for fragment receive queue])
|
||||
#
|
||||
# User configuration options
|
||||
#
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([send-table-id],
|
||||
[BMI_PORTALS_SEND_TABLE_ID], [1],
|
||||
[Portals table id to use for send/recv ])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([retrans-table-id],
|
||||
[BMI_PORTALS_RETRANS_TABLE_ID], [2],
|
||||
[Portals table id to use for retransmit request queue])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([rdma-table-id],
|
||||
[BMI_PORTALS_RDMA_TABLE_ID], [2],
|
||||
[Portals table id to use for RDMA request])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([debug-level],
|
||||
[BMI_PORTALS_DEFAULT_DEBUG_LEVEL], [100],
|
||||
[debugging level for portals bmi])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([request-cache-size],
|
||||
[BMI_PORTALS_DEFAULT_REQUEST_CACHE_SIZE], [1],
|
||||
[request cache size for portals bmi])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([eager-limit],
|
||||
[BMI_PORTALS_DEFAULT_EAGER_LIMIT], [16384],
|
||||
[max size for eager sends])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([first-frag-size],
|
||||
[BMI_PORTALS_DEFAULT_FIRST_FRAG_SIZE], [16384],
|
||||
[first frag size for portals bmi])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([min-send-size],
|
||||
[BMI_PORTALS_DEFAULT_MIN_SEND_SIZE], [0],
|
||||
[min size for send fragments])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([max-send-size],
|
||||
[BMI_PORTALS_DEFAULT_MAX_SEND_SIZE], [0],
|
||||
[max size for send fragments])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([first-frag-num-entries],
|
||||
[BMI_PORTALS_DEFAULT_FIRST_FRAG_NUM_ENTRIES], [3],
|
||||
[number of memory descriptors for first fragments])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([first-frag-entry-size],
|
||||
[BMI_PORTALS_DEFAULT_FIRST_FRAG_ENTRY_SIZE], [2098152],
|
||||
[size of memory associeted with first fag md])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([min-rdma-size],
|
||||
[BMI_PORTALS_DEFAULT_MIN_RDMA_SIZE], [0],
|
||||
[min size for rdma fragments])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([max-rdma-size],
|
||||
[BMI_PORTALS_DEFAULT_MAX_RDMA_SIZE], [0],
|
||||
[max size for rdma fragments])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([max-sends-pending],
|
||||
[BMI_PORTALS_MAX_SENDS_PENDING], [0],
|
||||
[max number of sends pending at any time])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([recv-queue-size],
|
||||
[BMI_PORTALS_DEFAULT_RECV_QUEUE_SIZE], [512],
|
||||
[size of event queue for receiving frags])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([send-queue-size],
|
||||
[BMI_PORTALS_DEFAULT_SEND_QUEUE_SIZE], [128],
|
||||
[Max number of send fragmenst pending])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([rndv-frag-min-size],
|
||||
[BMI_PORTALS_DEFAULT_RNDV_FRAG_MIN_SIZE], [0],
|
||||
[minimum size of rndv fragments])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([rndv-frag-max-size],
|
||||
[BMI_PORTALS_DEFAULT_RNDV_FRAG_MAX_SIZE], [16384],
|
||||
[maximum size of rndv fragments])
|
||||
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([free-list-init-num],
|
||||
[BMI_PORTALS_DEFAULT_FREE_LIST_INIT_NUM], [256],
|
||||
[BMI_PORTALS_DEFAULT_FREE_LIST_INIT_NUM], [8],
|
||||
[starting size of free lists])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([free-list-max-num],
|
||||
[BMI_PORTALS_DEFAULT_FREE_LIST_MAX_NUM], [-1],
|
||||
[BMI_PORTALS_DEFAULT_FREE_LIST_MAX_NUM], [1024],
|
||||
[maximum size of free lists])
|
||||
MCA_BMI_PORTALS_CONFIG_VAL([free-list-inc-num],
|
||||
[BMI_PORTALS_DEFAULT_FREE_LIST_inc_NUM], [256],
|
||||
[BMI_PORTALS_DEFAULT_FREE_LIST_INC_NUM], [32],
|
||||
[grow size for freelists])
|
||||
|
||||
#
|
||||
|
@ -33,12 +33,16 @@
|
||||
mca_bmi_portals_module_t mca_bmi_portals_module = {
|
||||
{
|
||||
&mca_bmi_portals_component.super,
|
||||
|
||||
/* NOTE: All these default values are set in
|
||||
component_open() */
|
||||
|
||||
0, /* max size of first frag */
|
||||
0, /* min send size */
|
||||
0, /* max send size */
|
||||
0, /* min rdma size */
|
||||
0, /* max rdma size */
|
||||
60, /* exclusivity - higher than sm, lower than self */
|
||||
0, /* exclusivity - higher than sm, lower than self */
|
||||
0, /* latency */
|
||||
0, /* bandwidth */
|
||||
0, /* bmi flags */
|
||||
@ -130,11 +134,13 @@ mca_bmi_portals_finalize(struct mca_bmi_base_module_t *bmi_base)
|
||||
(struct mca_bmi_portals_module_t *) bmi_base;
|
||||
int ret;
|
||||
|
||||
ret = PtlNIFini(bmi->ni_handle);
|
||||
if (PTL_OK != ret) {
|
||||
ompi_output_verbose(20, mca_bmi_portals_component.portals_output,
|
||||
"PtlNIFini returned %d", ret);
|
||||
return OMPI_ERROR;
|
||||
if (PTL_INVALID_HANDLE != bmi->ni_handle) {
|
||||
ret = PtlNIFini(bmi->ni_handle);
|
||||
if (PTL_OK != ret) {
|
||||
ompi_output_verbose(20, mca_bmi_portals_component.portals_output,
|
||||
"PtlNIFini returned %d", ret);
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
}
|
||||
ompi_output_verbose(20, mca_bmi_portals_component.portals_output,
|
||||
"successfully finalized module");
|
||||
|
@ -58,7 +58,7 @@ struct mca_bmi_portals_component_t {
|
||||
locked */
|
||||
uint32_t portals_num_modules;
|
||||
/* List of currently available modules */
|
||||
struct mca_bmi_portals_module_t **portals_modules;
|
||||
struct mca_bmi_portals_module_t *portals_modules;
|
||||
|
||||
/* initial size of free lists */
|
||||
int portals_free_list_init_num;
|
||||
@ -75,35 +75,40 @@ typedef struct mca_bmi_portals_component_t mca_bmi_portals_component_t;
|
||||
|
||||
#define MCA_BMI_PORTALS_EQ_RECV 0
|
||||
#define MCA_BMI_PORTALS_EQ_SEND 1
|
||||
#define MCA_BMI_PORTALS_EQ_SIZE 2
|
||||
#define MCA_BMI_PORTALS_EQ_RDMA 2
|
||||
#define MCA_BMI_PORTALS_EQ_SIZE 3
|
||||
|
||||
struct mca_bmi_portals_module_t {
|
||||
/* base BMI module interface */
|
||||
mca_bmi_base_module_t super;
|
||||
|
||||
/* number of mds for first frags */
|
||||
int first_frag_num_entries;
|
||||
/* registered callbacks */
|
||||
mca_bmi_base_recv_reg_t portals_reg[MCA_BMI_TAG_MAX];
|
||||
|
||||
ompi_free_list_t portals_frag_eager;
|
||||
ompi_free_list_t portals_frag_max;
|
||||
ompi_free_list_t portals_frag_user;
|
||||
|
||||
/* number of mds for recv frags */
|
||||
int portals_recv_mds_num;
|
||||
/* size of each md for first frags */
|
||||
int first_frag_entry_size;
|
||||
int portals_recv_mds_size;
|
||||
|
||||
/* size for event queue */
|
||||
int eq_sizes[MCA_BMI_PORTALS_EQ_SIZE];
|
||||
int portals_eq_sizes[MCA_BMI_PORTALS_EQ_SIZE];
|
||||
/* frag receive event queue */
|
||||
ptl_handle_eq_t eq_handles[MCA_BMI_PORTALS_EQ_SIZE];
|
||||
ptl_handle_eq_t portals_eq_handles[MCA_BMI_PORTALS_EQ_SIZE];
|
||||
|
||||
/* our portals network interface */
|
||||
ptl_handle_ni_t ni_handle;
|
||||
ptl_handle_ni_t portals_ni_h;
|
||||
/* the limits returned from PtlNIInit for interface */
|
||||
ptl_ni_limits_t limits;
|
||||
ptl_ni_limits_t portals_ni_limits;
|
||||
|
||||
/* number of dropped messages */
|
||||
ptl_sr_value_t dropped;
|
||||
ptl_sr_value_t portals_sr_dropped;
|
||||
};
|
||||
typedef struct mca_bmi_portals_module_t mca_bmi_portals_module_t;
|
||||
|
||||
struct mca_bmi_portals_recv_frag_t;
|
||||
struct mca_bmi_portals_send_frag_t;
|
||||
|
||||
/*
|
||||
* Component functions (bmi_portals_component.c)
|
||||
*/
|
||||
|
@ -44,7 +44,7 @@ int
|
||||
mca_bmi_portals_init(mca_bmi_portals_component_t *comp)
|
||||
{
|
||||
ptl_process_id_t info;
|
||||
int ret;
|
||||
int ret, i;
|
||||
#if 0
|
||||
FILE *output;
|
||||
char *tmp;
|
||||
@ -77,19 +77,23 @@ mca_bmi_portals_init(mca_bmi_portals_component_t *comp)
|
||||
/* with the utcp interface, only ever one "NIC" */
|
||||
comp->portals_num_modules = 1;
|
||||
comp->portals_modules = calloc(comp->portals_num_modules,
|
||||
sizeof(mca_bmi_portals_module_t *));
|
||||
sizeof(mca_bmi_portals_module_t));
|
||||
if (NULL == comp->portals_modules) {
|
||||
ompi_output_verbose(10, mca_bmi_portals_component.portals_output,
|
||||
"malloc failed in mca_bmi_portals_init");
|
||||
return OMPI_ERR_TEMP_OUT_OF_RESOURCE;
|
||||
}
|
||||
comp->portals_modules[0] = malloc(sizeof(mca_bmi_portals_module_t));
|
||||
if (NULL == comp->portals_modules) {
|
||||
ompi_output_verbose(10, mca_bmi_portals_component.portals_output,
|
||||
"malloc failed in mca_bmi_portals_init");
|
||||
return OMPI_ERR_TEMP_OUT_OF_RESOURCE;
|
||||
|
||||
/* compat code is responsible for copying over the "template" onto
|
||||
each module instance. The calling code will create the free
|
||||
lists and the like - we're only responsible for the
|
||||
Portals-specific entries */
|
||||
for (i = 0 ; i < comp->portals_num_modules ; ++i) {
|
||||
memcpy(&(comp->portals_modules[i]),
|
||||
mca_bmi_portals_module,
|
||||
sizeof(mca_bmi_portals_module_t));
|
||||
/* the defaults are good enough for the rest */
|
||||
}
|
||||
*(comp->portals_modules[0]) = mca_bmi_portals_module;
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
@ -201,8 +205,8 @@ mca_bmi_portals_add_procs_compat(struct mca_bmi_portals_module_t* bmi,
|
||||
ret = PtlNIInit(PTL_IFACE_DEFAULT, /* interface to initialize */
|
||||
PTL_PID_ANY, /* let library assign our pid */
|
||||
NULL, /* no desired limits */
|
||||
&(bmi->limits), /* save our limits somewhere */
|
||||
&(bmi->ni_handle) /* our interface handle */
|
||||
&(bmi->portals_limits), /* save our limits somewhere */
|
||||
&(bmi->portals_ni_h) /* our interface handle */
|
||||
);
|
||||
if (PTL_OK != ret) {
|
||||
ompi_output_verbose(10, mca_bmi_portals_component.portals_output,
|
||||
@ -211,7 +215,7 @@ mca_bmi_portals_add_procs_compat(struct mca_bmi_portals_module_t* bmi,
|
||||
}
|
||||
|
||||
#if 0
|
||||
PtlNIDebug(bmi->ni_handle, PTL_DBG_ALL | PTL_DBG_NI_ALL);
|
||||
PtlNIDebug(bmi->portals_ni_h, PTL_DBG_ALL | PTL_DBG_NI_ALL);
|
||||
#endif
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
|
@ -107,84 +107,77 @@ mca_bmi_portals_component_open(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* initialize state */
|
||||
/* initialize component state */
|
||||
mca_bmi_portals_component.portals_num_modules = 0;
|
||||
mca_bmi_portals_component.portals_modules = NULL;
|
||||
|
||||
/* initialize objects */
|
||||
#if 0
|
||||
OBJ_CONSTRUCT(&mca_bmi_portals_component.portals_send_frags,
|
||||
ompi_free_list_t);
|
||||
OBJ_CONSTRUCT(&mca_bmi_portals_component.portals_recv_frags,
|
||||
ompi_free_list_t);
|
||||
OBJ_CONSTRUCT(&mca_bmi_portals_component.portals_pending_acks,
|
||||
ompi_list_t);
|
||||
#endif
|
||||
OBJ_CONSTRUCT(&mca_bmi_portals_component.portals_lock,
|
||||
/* initalize component objects */
|
||||
OBJ_CONSTRUCT(&mca_bmi_portals_component.portals_lock,
|
||||
ompi_mutex_t);
|
||||
|
||||
/* register portals module parameters */
|
||||
#if BMI_PORTALS_UTCP
|
||||
mca_bmi_portals_component.portals_ifname =
|
||||
/* get configured state for component */
|
||||
#if PTL_PORTALS_UTCP
|
||||
mca_ptl_portals_component.portals_ifname =
|
||||
param_register_string("ifname", "eth0");
|
||||
#endif
|
||||
portals_output_stream.lds_verbose_level =
|
||||
param_register_int("debug_level",
|
||||
BMI_PORTALS_DEFAULT_DEBUG_LEVEL);
|
||||
PTL_PORTALS_DEFAULT_DEBUG_LEVEL);
|
||||
|
||||
mca_bmi_portals_component.portals_free_list_init_num =
|
||||
mca_ptl_portals_component.portals_free_list_init_num =
|
||||
param_register_int("free_list_init_num",
|
||||
BMI_PORTALS_DEFAULT_FREE_LIST_INIT_NUM);
|
||||
mca_bmi_portals_component.portals_free_list_max_num =
|
||||
PTL_PORTALS_DEFAULT_FREE_LIST_INIT_NUM);
|
||||
mca_ptl_portals_component.portals_free_list_max_num =
|
||||
param_register_int("free_list_max_num",
|
||||
BMI_PORTALS_DEFAULT_FREE_LIST_MAX_NUM);
|
||||
mca_bmi_portals_component.portals_free_list_inc_num =
|
||||
PTL_PORTALS_DEFAULT_FREE_LIST_MAX_NUM);
|
||||
mca_ptl_portals_component.portals_free_list_inc_num =
|
||||
param_register_int("free_list_inc_num",
|
||||
BMI_PORTALS_DEFAULT_FREE_LIST_inc_NUM);
|
||||
PTL_PORTALS_DEFAULT_FREE_LIST_INC_NUM);
|
||||
|
||||
#if 0
|
||||
mca_bmi_portals_module.super.bmi_cache_size =
|
||||
param_register_int("request_cache_size",
|
||||
BMI_PORTALS_DEFAULT_REQUEST_CACHE_SIZE);
|
||||
mca_bmi_portals_module.super.bmi_first_frag_size =
|
||||
param_register_int("first_frag_size",
|
||||
BMI_PORTALS_DEFAULT_FIRST_FRAG_SIZE);
|
||||
mca_bmi_portals_module.super.bmi_min_frag_size =
|
||||
param_register_int("rndv_frag_min_size",
|
||||
BMI_PORTALS_DEFAULT_RNDV_FRAG_MIN_SIZE);
|
||||
mca_bmi_portals_module.super.bmi_max_frag_size =
|
||||
param_register_int("rndv_frag_max_size",
|
||||
BMI_PORTALS_DEFAULT_RNDV_FRAG_MAX_SIZE);
|
||||
#endif
|
||||
|
||||
mca_bmi_portals_module.first_frag_num_entries =
|
||||
param_register_int("first_frag_num_entries",
|
||||
BMI_PORTALS_DEFAULT_FIRST_FRAG_NUM_ENTRIES);
|
||||
mca_bmi_portals_module.first_frag_entry_size =
|
||||
param_register_int("first_frag_entry_size",
|
||||
BMI_PORTALS_DEFAULT_FIRST_FRAG_ENTRY_SIZE);
|
||||
|
||||
mca_bmi_portals_module.eq_sizes[MCA_BMI_PORTALS_EQ_RECV] =
|
||||
param_register_int("recv_queue_size",
|
||||
BMI_PORTALS_DEFAULT_RECV_QUEUE_SIZE);
|
||||
mca_bmi_portals_module.eq_sizes[MCA_BMI_PORTALS_EQ_SEND] =
|
||||
(param_register_int("send_queue_size",
|
||||
BMI_PORTALS_DEFAULT_SEND_QUEUE_SIZE)) * 3;
|
||||
|
||||
/* finish with objects */
|
||||
/* start up debugging output */
|
||||
asprintf(&(portals_output_stream.lds_prefix),
|
||||
"bmi: portals (%5d): ", getpid());
|
||||
|
||||
mca_bmi_portals_component.portals_output =
|
||||
ompi_output_open(&portals_output_stream);
|
||||
|
||||
/* fill in remaining defaults for module data */
|
||||
for (i = 0 ; i < MCA_BMI_PORTALS_EQ_SIZE ; ++i) {
|
||||
mca_bmi_portals_module.eq_handles[i] = PTL_EQ_NONE;
|
||||
/* fill default module state */
|
||||
mca_ptl_portals_module.super.bmi_flags = MCA_BMI_FLAGS_RDMA;
|
||||
|
||||
for (i = 0 ; i < MCA_BMI_TAG_MAX ; ++i) {
|
||||
mca_bmi_portals_module.portals_reg = NULL;
|
||||
}
|
||||
|
||||
mca_bmi_portals_module.ni_handle = PTL_INVALID_HANDLE;
|
||||
mca_bmi_portals_module.dropped = 0;
|
||||
for (i = 0 ; i < MCA_BMI_PORTALS_EQ_SIZE ; ++i) {
|
||||
mca_bmi_portals_module.portals_eq_sizes[i] = 0;
|
||||
mca_bmi_portals_module.portals_eq_handles[i] = PTL_EQ_NONE;
|
||||
}
|
||||
|
||||
mca_bmi_portals_module.portals_ni_h = PTL_INVALID_HANDLE;
|
||||
mca_bmi_portals_module.portals_sr_dropped = 0;
|
||||
|
||||
/* get configured state for default module */
|
||||
mca_ptl_portals_module.super.bmi_eager_limit =
|
||||
param_register_int("eager_limit",
|
||||
PTL_PORTALS_DEFAULT_EAGER_LIMIT);
|
||||
mca_ptl_portals_module.super.bmi_min_send_size =
|
||||
param_register_int("min_send_size",
|
||||
PTL_PORTALS_DEFAULT_MIN_SEND_SIZE);
|
||||
mca_ptl_portals_module.super.bmi_max_send_size =
|
||||
param_register_int("max_send_size",
|
||||
PTL_PORTALS_DEFAULT_MAX_SEND_SIZE);
|
||||
mca_ptl_portals_module.super.bmi_min_rdma_size =
|
||||
param_register_int("min_rdma_size",
|
||||
PTL_PORTALS_DEFAULT_MIN_RDMA_SIZE);
|
||||
mca_ptl_portals_module.super.bmi_max_rdma_size =
|
||||
param_register_int("max_rdma_size",
|
||||
PTL_PORTALS_DEFAULT_MAX_RDMA_SIZE);
|
||||
mca_ptl_portals_module.super.bmi_exclusivity =
|
||||
param_register_int("exclusivity", 60);
|
||||
mca_ptl_portals_module.super.bmi_latency =
|
||||
param_register_int("latency", 0);
|
||||
mca_ptl_portals_module.super.bmi_bandwidth =
|
||||
param_register_int("bandwidth", 1000);
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
@ -193,16 +186,12 @@ mca_bmi_portals_component_open(void)
|
||||
int
|
||||
mca_bmi_portals_component_close(void)
|
||||
{
|
||||
/* print out debugging if anything is pending */
|
||||
/* BWB - implement me, if possible */
|
||||
|
||||
/* release resources */
|
||||
OBJ_DESTRUCT(&mca_bmi_portals_component.portals_lock);
|
||||
#if 0
|
||||
OBJ_DESTRUCT(&mca_bmi_portals_component.portals_recv_frags);
|
||||
OBJ_DESTRUCT(&mca_bmi_portals_component.portals_pending_acks);
|
||||
OBJ_DESTRUCT(&mca_bmi_portals_component.portals_lock);
|
||||
#endif
|
||||
|
||||
if (NULL != mca_bmi_portals_component.portals_modules) {
|
||||
free(mca_bmi_portals_component.portals_modules);
|
||||
}
|
||||
|
||||
if (NULL != mca_bmi_portals_component.portals_ifname) {
|
||||
free(mca_bmi_portals_component.portals_ifname);
|
||||
@ -226,6 +215,8 @@ mca_bmi_portals_component_init(int *num_bmis,
|
||||
{
|
||||
mca_bmi_base_module_t** bmis;
|
||||
*num_bmis = 0;
|
||||
int i;
|
||||
uint32_t length;
|
||||
|
||||
if (enable_progress_threads) {
|
||||
ompi_output_verbose(20, mca_bmi_portals_component.portals_output,
|
||||
@ -233,24 +224,6 @@ mca_bmi_portals_component_init(int *num_bmis,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if 0
|
||||
ompi_free_list_init(&mca_bmi_portals_component.portals_send_frags,
|
||||
sizeof(mca_bmi_portals_send_frag_t),
|
||||
OBJ_CLASS(mca_bmi_portals_send_frag_t),
|
||||
mca_bmi_portals_component.portals_free_list_init_num,
|
||||
mca_bmi_portals_component.portals_free_list_max_num,
|
||||
mca_bmi_portals_component.portals_free_list_inc_num,
|
||||
NULL); /* use default allocator */
|
||||
|
||||
ompi_free_list_init(&mca_bmi_portals_component.portals_recv_frags,
|
||||
sizeof(mca_bmi_portals_recv_frag_t),
|
||||
OBJ_CLASS(mca_bmi_portals_recv_frag_t),
|
||||
mca_bmi_portals_component.portals_free_list_init_num,
|
||||
mca_bmi_portals_component.portals_free_list_max_num,
|
||||
mca_bmi_portals_component.portals_free_list_inc_num,
|
||||
NULL); /* use default allocator */
|
||||
#endif
|
||||
|
||||
/* initialize portals bmi. note that this is in the compat code because
|
||||
it's fairly non-portable between implementations */
|
||||
if (OMPI_SUCCESS != mca_bmi_portals_init(&mca_bmi_portals_component)) {
|
||||
@ -259,15 +232,42 @@ mca_bmi_portals_component_init(int *num_bmis,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* return array of bmis */
|
||||
bmis = malloc(mca_bmi_portals_component.portals_num_modules *
|
||||
sizeof(mca_bmi_base_module_t*));
|
||||
if (NULL == bmis) return NULL;
|
||||
bmis = malloc(mca_bmi_portals_component.portals_num_modules *
|
||||
sizeof(mca_bmi_portals_module_t*));
|
||||
for (i = 0 ; i < mca_bmi_portals_component.portals_num_modules ; ++i) {
|
||||
bmis[i] = (mca_bmi_base_module_t*)
|
||||
(mca_bmi_portals_component.portals_modules + i);
|
||||
|
||||
memcpy(bmis,
|
||||
mca_bmi_portals_component.portals_modules,
|
||||
mca_bmi_portals_component.portals_num_modules *
|
||||
sizeof(mca_bmi_base_module_t*));
|
||||
OBJ_CONSTRUCT(&bmis[i]->portals_frag_eager, ompi_free_list_t);
|
||||
OBJ_CONSTRUCT(&bmis[i]->portals_frag_max, ompi_free_list_t);
|
||||
OBJ_CONSTRUCT(&bmis[i]->portals_frag_user, ompi_free_list_t);
|
||||
|
||||
/* eager frags */
|
||||
ompi_free_list_init(&(bmis[i].send_free_eager),
|
||||
sizeof(mca_bmi_portals_bmis[i].super.bmi_eager_limit,
|
||||
OBJ_CLASS(mca_bmi_portals_send_frag_eager_t),
|
||||
mca_bmi_portals_component.portals_free_list_init_num,
|
||||
mca_bmi_portals_component.portals_free_list_max_num,
|
||||
mca_bmi_portals_component.portals_free_list_inc_num);
|
||||
|
||||
/* send frags */
|
||||
ompi_free_list_init(&(bmis[i].send_free_eager),
|
||||
bmis[i].super.bmi_max_sender_size,
|
||||
OBJ_CLASS(mca_bmi_portals_send_frag_eager_t),
|
||||
mca_bmi_portals_component.portals_free_list_init_num,
|
||||
mca_bmi_portals_component.portals_free_list_max_num,
|
||||
mca_bmi_portals_component.portals_free_list_inc_num);
|
||||
|
||||
/* user frags */
|
||||
ompi_free_list_init(&(bmis[i].send_free_eager),
|
||||
bmis[i].super.bmi_max_sender_size,
|
||||
OBJ_CLASS(mca_bmi_portals_send_frag_eager_t),
|
||||
mca_bmi_portals_component.portals_free_list_init_num,
|
||||
mca_bmi_portals_component.portals_free_list_max_num,
|
||||
mca_bmi_portals_component.portals_free_list_inc_num);
|
||||
|
||||
|
||||
}
|
||||
*num_bmis = mca_bmi_portals_component.portals_num_modules;
|
||||
|
||||
ompi_output_verbose(20, mca_bmi_portals_component.portals_output,
|
||||
|
@ -36,6 +36,7 @@ mca_bmi_portals_register(struct mca_bmi_base_module_t* bmi,
|
||||
mca_bmi_base_module_recv_cb_fn_t cbfunc,
|
||||
void* cbdata)
|
||||
{
|
||||
printf("bmi register\n");
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
||||
@ -44,6 +45,8 @@ mca_bmi_base_descriptor_t*
|
||||
mca_bmi_portals_alloc(struct mca_bmi_base_module_t* bmi,
|
||||
size_t size)
|
||||
{
|
||||
printf("bmi alloc: %d\n", size);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -51,6 +54,7 @@ int
|
||||
mca_bmi_portals_free(struct mca_bmi_base_module_t* bmi,
|
||||
mca_bmi_base_descriptor_t* des)
|
||||
{
|
||||
printf("bmi free\n");
|
||||
return OMPI_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -63,6 +67,7 @@ mca_bmi_portals_prepare_src(struct mca_bmi_base_module_t* bmi,
|
||||
size_t reserve,
|
||||
size_t* size)
|
||||
{
|
||||
printf("bmi prepare src\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -75,6 +80,7 @@ mca_bmi_portals_prepare_dst(struct mca_bmi_base_module_t* bmi,
|
||||
size_t reserve,
|
||||
size_t* size)
|
||||
{
|
||||
printf("bmi prepare dst\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -85,6 +91,7 @@ mca_bmi_portals_send(struct mca_bmi_base_module_t* bmi,
|
||||
struct mca_bmi_base_descriptor_t* descriptor,
|
||||
mca_bmi_base_tag_t tag)
|
||||
{
|
||||
printf("bmi send\n");
|
||||
return OMPI_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -94,6 +101,7 @@ mca_bmi_portals_put(struct mca_bmi_base_module_t* bmi,
|
||||
struct mca_bmi_base_endpoint_t* bmi_peer,
|
||||
struct mca_bmi_base_descriptor_t* decriptor)
|
||||
{
|
||||
printf("bmi put\n");
|
||||
return OMPI_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -103,5 +111,6 @@ mca_bmi_portals_get(struct mca_bmi_base_module_t* bmi,
|
||||
struct mca_bmi_base_endpoint_t* bmi_peer,
|
||||
struct mca_bmi_base_descriptor_t* decriptor)
|
||||
{
|
||||
printf("bmi get\n");
|
||||
return OMPI_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user