1
1

Merge pull request #233 from ggouaillardet/rfc/coll_module_disable

Provide a symmetric behavior for the activation/deactivation of collective modules.
Этот коммит содержится в:
bosilca 2014-10-16 09:22:04 -04:00
родитель 27dcca0bb2 0f983d5a4f
Коммит d819939841
32 изменённых файлов: 348 добавлений и 246 удалений

Просмотреть файл

@ -17,6 +17,8 @@
* Copyright (c) 2012 Oak Ridge National Laboratory. All rights reserved. * Copyright (c) 2012 Oak Ridge National Laboratory. All rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -49,7 +51,7 @@ struct avail_coll_t {
opal_list_item_t super; opal_list_item_t super;
int ac_priority; int ac_priority;
mca_coll_base_module_2_0_0_t *ac_module; mca_coll_base_module_2_1_0_t *ac_module;
}; };
typedef struct avail_coll_t avail_coll_t; typedef struct avail_coll_t avail_coll_t;
@ -61,16 +63,16 @@ static opal_list_t *check_components(opal_list_t * components,
ompi_communicator_t * comm); ompi_communicator_t * comm);
static int check_one_component(ompi_communicator_t * comm, static int check_one_component(ompi_communicator_t * comm,
const mca_base_component_t * component, const mca_base_component_t * component,
mca_coll_base_module_2_0_0_t ** module); mca_coll_base_module_2_1_0_t ** module);
static int query(const mca_base_component_t * component, static int query(const mca_base_component_t * component,
ompi_communicator_t * comm, int *priority, ompi_communicator_t * comm, int *priority,
mca_coll_base_module_2_0_0_t ** module); mca_coll_base_module_2_1_0_t ** module);
static int query_2_0_0(const mca_coll_base_component_2_0_0_t * static int query_2_0_0(const mca_coll_base_component_2_0_0_t *
coll_component, ompi_communicator_t * comm, coll_component, ompi_communicator_t * comm,
int *priority, int *priority,
mca_coll_base_module_2_0_0_t ** module); mca_coll_base_module_2_1_0_t ** module);
/* /*
* Stuff for the OBJ interface * Stuff for the OBJ interface
@ -267,7 +269,7 @@ static opal_list_t *check_components(opal_list_t * components,
int priority; int priority;
const mca_base_component_t *component; const mca_base_component_t *component;
mca_base_component_list_item_t *cli; mca_base_component_list_item_t *cli;
mca_coll_base_module_2_0_0_t *module; mca_coll_base_module_2_1_0_t *module;
opal_list_t *selectable; opal_list_t *selectable;
avail_coll_t *avail; avail_coll_t *avail;
@ -309,7 +311,7 @@ static opal_list_t *check_components(opal_list_t * components,
*/ */
static int check_one_component(ompi_communicator_t * comm, static int check_one_component(ompi_communicator_t * comm,
const mca_base_component_t * component, const mca_base_component_t * component,
mca_coll_base_module_2_0_0_t ** module) mca_coll_base_module_2_1_0_t ** module)
{ {
int err; int err;
int priority = -1; int priority = -1;
@ -343,7 +345,7 @@ static int check_one_component(ompi_communicator_t * comm,
*/ */
static int query(const mca_base_component_t * component, static int query(const mca_base_component_t * component,
ompi_communicator_t * comm, ompi_communicator_t * comm,
int *priority, mca_coll_base_module_2_0_0_t ** module) int *priority, mca_coll_base_module_2_1_0_t ** module)
{ {
*module = NULL; *module = NULL;
if (2 == component->mca_type_major_version && if (2 == component->mca_type_major_version &&
@ -363,9 +365,9 @@ static int query(const mca_base_component_t * component,
static int query_2_0_0(const mca_coll_base_component_2_0_0_t * component, static int query_2_0_0(const mca_coll_base_component_2_0_0_t * component,
ompi_communicator_t * comm, int *priority, ompi_communicator_t * comm, int *priority,
mca_coll_base_module_2_0_0_t ** module) mca_coll_base_module_2_1_0_t ** module)
{ {
mca_coll_base_module_2_0_0_t *ret; mca_coll_base_module_2_1_0_t *ret;
/* There's currently no need for conversion */ /* There's currently no need for conversion */

Просмотреть файл

@ -36,6 +36,12 @@
#define CLOSE(comm, func) \ #define CLOSE(comm, func) \
do { \ do { \
if (NULL != comm->c_coll.coll_ ## func ## _module) { \ if (NULL != comm->c_coll.coll_ ## func ## _module) { \
if (NULL != comm->c_coll.coll_ ## func ## _module-> \
coll_module_disable) { \
comm->c_coll.coll_ ## func ## _module-> \
coll_module_disable( \
comm->c_coll.coll_ ## func ## _module, comm); \
} \
OBJ_RELEASE(comm->c_coll.coll_ ## func ## _module); \ OBJ_RELEASE(comm->c_coll.coll_ ## func ## _module); \
comm->c_coll.coll_## func = NULL; \ comm->c_coll.coll_## func = NULL; \
comm->c_coll.coll_## func ## _module = NULL; \ comm->c_coll.coll_## func ## _module = NULL; \

Просмотреть файл

@ -12,6 +12,8 @@
* All rights reserved. * All rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -46,6 +48,7 @@ static void coll_base_module_construct(mca_coll_base_module_t *m)
{ {
/* zero out all functions */ /* zero out all functions */
memset ((char *) m + sizeof (m->super), 0, sizeof (*m) - sizeof (m->super)); memset ((char *) m + sizeof (m->super), 0, sizeof (*m) - sizeof (m->super));
m->coll_module_disable = NULL;
} }
OBJ_CLASS_INSTANCE(mca_coll_base_module_t, opal_object_t, OBJ_CLASS_INSTANCE(mca_coll_base_module_t, opal_object_t,

Просмотреть файл

@ -15,6 +15,8 @@
* Copyright (c) 2012 Oak Rigde National Laboratory. All rights reserved. * Copyright (c) 2012 Oak Rigde National Laboratory. All rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -134,7 +136,7 @@ typedef int (*mca_coll_base_component_init_query_fn_t)
* provide a module with the requested functionality or NULL if the * provide a module with the requested functionality or NULL if the
* component should not be used on the given communicator. * component should not be used on the given communicator.
*/ */
typedef struct mca_coll_base_module_2_0_0_t * typedef struct mca_coll_base_module_2_1_0_t *
(*mca_coll_base_component_comm_query_2_0_0_fn_t) (*mca_coll_base_component_comm_query_2_0_0_fn_t)
(struct ompi_communicator_t *comm, int *priority); (struct ompi_communicator_t *comm, int *priority);
@ -145,7 +147,7 @@ typedef struct mca_coll_base_module_2_0_0_t *
/** /**
* Enable module for collective communication * Enable module for collective communication
* *
* Enable the module for collective commuication. Modules are enabled * Enable the module for collective communication. Modules are enabled
* in order from lowest to highest priority. At each component, * in order from lowest to highest priority. At each component,
* collective functions with priority higher than the existing * collective functions with priority higher than the existing
* function are copied into the communicator's function table and the * function are copied into the communicator's function table and the
@ -174,147 +176,162 @@ typedef struct mca_coll_base_module_2_0_0_t *
* @param[in] comm Communicator being created * @param[in] comm Communicator being created
*/ */
typedef int typedef int
(*mca_coll_base_module_enable_1_1_0_fn_t)(struct mca_coll_base_module_2_0_0_t* module, (*mca_coll_base_module_enable_1_1_0_fn_t)(struct mca_coll_base_module_2_1_0_t* module,
struct ompi_communicator_t *comm);
/**
* Disable module for collective communication
*
* Disable the module for collective communication. This callback is
* meant to avoid unused modules referencing unused modules
* (and hence avoid memory leaks).
*
* @param[in/out] module Module disabled during mca_coll_base_comm_unselect
* @param[in] comm Communicator being disabled
*/
typedef int
(*mca_coll_base_module_disable_1_1_0_fn_t)(struct mca_coll_base_module_2_1_0_t* module,
struct ompi_communicator_t *comm); struct ompi_communicator_t *comm);
typedef int (*mca_coll_base_module_allgather_fn_t) typedef int (*mca_coll_base_module_allgather_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int rcount, struct ompi_datatype_t *rdtype, void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_allgatherv_fn_t) typedef int (*mca_coll_base_module_allgatherv_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void * rbuf, int *rcounts, int *disps, struct ompi_datatype_t *rdtype, void * rbuf, int *rcounts, int *disps, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_allreduce_fn_t) typedef int (*mca_coll_base_module_allreduce_fn_t)
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_alltoall_fn_t) typedef int (*mca_coll_base_module_alltoall_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void* rbuf, int rcount, struct ompi_datatype_t *rdtype, void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_alltoallv_fn_t) typedef int (*mca_coll_base_module_alltoallv_fn_t)
(void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t *sdtype, (void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t *sdtype,
void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t *rdtype, void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_alltoallw_fn_t) typedef int (*mca_coll_base_module_alltoallw_fn_t)
(void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t **sdtypes, (void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t **sdtypes,
void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t **rdtypes, void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t **rdtypes,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_barrier_fn_t) typedef int (*mca_coll_base_module_barrier_fn_t)
(struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); (struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_bcast_fn_t) typedef int (*mca_coll_base_module_bcast_fn_t)
(void *buff, int count, struct ompi_datatype_t *datatype, int root, (void *buff, int count, struct ompi_datatype_t *datatype, int root,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_exscan_fn_t) typedef int (*mca_coll_base_module_exscan_fn_t)
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_gather_fn_t) typedef int (*mca_coll_base_module_gather_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int rcount, struct ompi_datatype_t *rdtype, void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_gatherv_fn_t) typedef int (*mca_coll_base_module_gatherv_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int *rcounts, int *disps, struct ompi_datatype_t *rdtype, void *rbuf, int *rcounts, int *disps, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_reduce_fn_t) typedef int (*mca_coll_base_module_reduce_fn_t)
(void *sbuf, void* rbuf, int count, struct ompi_datatype_t *dtype, (void *sbuf, void* rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_op_t *op, int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_reduce_scatter_fn_t) typedef int (*mca_coll_base_module_reduce_scatter_fn_t)
(void *sbuf, void *rbuf, int *rcounts, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int *rcounts, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_reduce_scatter_block_fn_t) typedef int (*mca_coll_base_module_reduce_scatter_block_fn_t)
(void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_scan_fn_t) typedef int (*mca_coll_base_module_scan_fn_t)
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_scatter_fn_t) typedef int (*mca_coll_base_module_scatter_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int rcount, struct ompi_datatype_t *rdtype, void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_scatterv_fn_t) typedef int (*mca_coll_base_module_scatterv_fn_t)
(void *sbuf, int *scounts, int *disps, struct ompi_datatype_t *sdtype, (void *sbuf, int *scounts, int *disps, struct ompi_datatype_t *sdtype,
void* rbuf, int rcount, struct ompi_datatype_t *rdtype, void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
/* nonblocking collectives */ /* nonblocking collectives */
typedef int (*mca_coll_base_module_iallgather_fn_t) typedef int (*mca_coll_base_module_iallgather_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int rcount, struct ompi_datatype_t *rdtype, void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_iallgatherv_fn_t) typedef int (*mca_coll_base_module_iallgatherv_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void * rbuf, int *rcounts, int *disps, struct ompi_datatype_t *rdtype, void * rbuf, int *rcounts, int *disps, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_iallreduce_fn_t) typedef int (*mca_coll_base_module_iallreduce_fn_t)
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_op_t *op, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_0_0_t *module); ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ialltoall_fn_t) typedef int (*mca_coll_base_module_ialltoall_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void* rbuf, int rcount, struct ompi_datatype_t *rdtype, void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ialltoallv_fn_t) typedef int (*mca_coll_base_module_ialltoallv_fn_t)
(void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t *sdtype, (void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t *sdtype,
void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t *rdtype, void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ialltoallw_fn_t) typedef int (*mca_coll_base_module_ialltoallw_fn_t)
(void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t **sdtypes, (void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t **sdtypes,
void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t **rdtypes, void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t **rdtypes,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ibarrier_fn_t) typedef int (*mca_coll_base_module_ibarrier_fn_t)
(struct ompi_communicator_t *comm, ompi_request_t ** request, (struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ibcast_fn_t) typedef int (*mca_coll_base_module_ibcast_fn_t)
(void *buff, int count, struct ompi_datatype_t *datatype, int root, (void *buff, int count, struct ompi_datatype_t *datatype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_iexscan_fn_t) typedef int (*mca_coll_base_module_iexscan_fn_t)
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_igather_fn_t) typedef int (*mca_coll_base_module_igather_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int rcount, struct ompi_datatype_t *rdtype, void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_igatherv_fn_t) typedef int (*mca_coll_base_module_igatherv_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int *rcounts, int *disps, struct ompi_datatype_t *rdtype, void *rbuf, int *rcounts, int *disps, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ireduce_fn_t) typedef int (*mca_coll_base_module_ireduce_fn_t)
(void *sbuf, void* rbuf, int count, struct ompi_datatype_t *dtype, (void *sbuf, void* rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_op_t *op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ireduce_scatter_fn_t) typedef int (*mca_coll_base_module_ireduce_scatter_fn_t)
(void *sbuf, void *rbuf, int *rcounts, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int *rcounts, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ireduce_scatter_block_fn_t) typedef int (*mca_coll_base_module_ireduce_scatter_block_fn_t)
(void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_iscan_fn_t) typedef int (*mca_coll_base_module_iscan_fn_t)
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype, (void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_iscatter_fn_t) typedef int (*mca_coll_base_module_iscatter_fn_t)
(void *sbuf, int scount, struct ompi_datatype_t *sdtype, (void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int rcount, struct ompi_datatype_t *rdtype, void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_iscatterv_fn_t) typedef int (*mca_coll_base_module_iscatterv_fn_t)
(void *sbuf, int *scounts, int *disps, struct ompi_datatype_t *sdtype, (void *sbuf, int *scounts, int *disps, struct ompi_datatype_t *sdtype,
void* rbuf, int rcount, struct ompi_datatype_t *rdtype, void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
/* /*
* The signature of the neighborhood alltoallw differs from alltoallw * The signature of the neighborhood alltoallw differs from alltoallw
@ -322,12 +339,12 @@ typedef int (*mca_coll_base_module_iscatterv_fn_t)
typedef int (*mca_coll_base_module_neighbor_alltoallw_fn_t) typedef int (*mca_coll_base_module_neighbor_alltoallw_fn_t)
(void *sbuf, int *scounts, MPI_Aint *sdisps, struct ompi_datatype_t **sdtypes, (void *sbuf, int *scounts, MPI_Aint *sdisps, struct ompi_datatype_t **sdtypes,
void *rbuf, int *rcounts, MPI_Aint *rdisps, struct ompi_datatype_t **rdtypes, void *rbuf, int *rcounts, MPI_Aint *rdisps, struct ompi_datatype_t **rdtypes,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_0_0_t *module); struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
typedef int (*mca_coll_base_module_ineighbor_alltoallw_fn_t) typedef int (*mca_coll_base_module_ineighbor_alltoallw_fn_t)
(void *sbuf, int *scounts, MPI_Aint *sdisps, struct ompi_datatype_t **sdtypes, (void *sbuf, int *scounts, MPI_Aint *sdisps, struct ompi_datatype_t **sdtypes,
void *rbuf, int *rcounts, MPI_Aint *rdisps, struct ompi_datatype_t **rdtypes, void *rbuf, int *rcounts, MPI_Aint *rdisps, struct ompi_datatype_t **rdtypes,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
/** /**
* Fault Tolerance Awareness function. * Fault Tolerance Awareness function.
@ -387,7 +404,7 @@ typedef struct mca_coll_base_component_2_0_0_t mca_coll_base_component_t;
* function, so the component is free to create a structure that * function, so the component is free to create a structure that
* inherits from this one for use as the module structure. * inherits from this one for use as the module structure.
*/ */
struct mca_coll_base_module_2_0_0_t { struct mca_coll_base_module_2_1_0_t {
/** Collective modules all inherit from opal_object */ /** Collective modules all inherit from opal_object */
opal_object_t super; opal_object_t super;
@ -448,13 +465,18 @@ struct mca_coll_base_module_2_0_0_t {
/** Fault tolerance event trigger function */ /** Fault tolerance event trigger function */
mca_coll_base_module_ft_event_fn_t ft_event; mca_coll_base_module_ft_event_fn_t ft_event;
/** Disable function called when a collective module will not
be used for the given communicator */
mca_coll_base_module_disable_1_1_0_fn_t coll_module_disable;
}; };
typedef struct mca_coll_base_module_2_0_0_t mca_coll_base_module_2_0_0_t; typedef struct mca_coll_base_module_2_1_0_t mca_coll_base_module_2_1_0_t;
/** Per guidence in mca.h, use the unversioned struct name if you just /** Per guidence in mca.h, use the unversioned struct name if you just
want to always keep up with the most recent version of the want to always keep up with the most recent version of the
interace. */ interace. */
typedef struct mca_coll_base_module_2_0_0_t mca_coll_base_module_t; typedef struct mca_coll_base_module_2_1_0_t mca_coll_base_module_t;
OMPI_DECLSPEC OBJ_CLASS_DECLARATION(mca_coll_base_module_t); OMPI_DECLSPEC OBJ_CLASS_DECLARATION(mca_coll_base_module_t);
/** /**
@ -468,97 +490,97 @@ OMPI_DECLSPEC OBJ_CLASS_DECLARATION(mca_coll_base_module_t);
*/ */
struct mca_coll_base_comm_coll_t { struct mca_coll_base_comm_coll_t {
mca_coll_base_module_allgather_fn_t coll_allgather; mca_coll_base_module_allgather_fn_t coll_allgather;
mca_coll_base_module_2_0_0_t *coll_allgather_module; mca_coll_base_module_2_1_0_t *coll_allgather_module;
mca_coll_base_module_allgatherv_fn_t coll_allgatherv; mca_coll_base_module_allgatherv_fn_t coll_allgatherv;
mca_coll_base_module_2_0_0_t *coll_allgatherv_module; mca_coll_base_module_2_1_0_t *coll_allgatherv_module;
mca_coll_base_module_allreduce_fn_t coll_allreduce; mca_coll_base_module_allreduce_fn_t coll_allreduce;
mca_coll_base_module_2_0_0_t *coll_allreduce_module; mca_coll_base_module_2_1_0_t *coll_allreduce_module;
mca_coll_base_module_alltoall_fn_t coll_alltoall; mca_coll_base_module_alltoall_fn_t coll_alltoall;
mca_coll_base_module_2_0_0_t *coll_alltoall_module; mca_coll_base_module_2_1_0_t *coll_alltoall_module;
mca_coll_base_module_alltoallv_fn_t coll_alltoallv; mca_coll_base_module_alltoallv_fn_t coll_alltoallv;
mca_coll_base_module_2_0_0_t *coll_alltoallv_module; mca_coll_base_module_2_1_0_t *coll_alltoallv_module;
mca_coll_base_module_alltoallw_fn_t coll_alltoallw; mca_coll_base_module_alltoallw_fn_t coll_alltoallw;
mca_coll_base_module_2_0_0_t *coll_alltoallw_module; mca_coll_base_module_2_1_0_t *coll_alltoallw_module;
mca_coll_base_module_barrier_fn_t coll_barrier; mca_coll_base_module_barrier_fn_t coll_barrier;
mca_coll_base_module_2_0_0_t *coll_barrier_module; mca_coll_base_module_2_1_0_t *coll_barrier_module;
mca_coll_base_module_bcast_fn_t coll_bcast; mca_coll_base_module_bcast_fn_t coll_bcast;
mca_coll_base_module_2_0_0_t *coll_bcast_module; mca_coll_base_module_2_1_0_t *coll_bcast_module;
mca_coll_base_module_exscan_fn_t coll_exscan; mca_coll_base_module_exscan_fn_t coll_exscan;
mca_coll_base_module_2_0_0_t *coll_exscan_module; mca_coll_base_module_2_1_0_t *coll_exscan_module;
mca_coll_base_module_gather_fn_t coll_gather; mca_coll_base_module_gather_fn_t coll_gather;
mca_coll_base_module_2_0_0_t *coll_gather_module; mca_coll_base_module_2_1_0_t *coll_gather_module;
mca_coll_base_module_gatherv_fn_t coll_gatherv; mca_coll_base_module_gatherv_fn_t coll_gatherv;
mca_coll_base_module_2_0_0_t *coll_gatherv_module; mca_coll_base_module_2_1_0_t *coll_gatherv_module;
mca_coll_base_module_reduce_fn_t coll_reduce; mca_coll_base_module_reduce_fn_t coll_reduce;
mca_coll_base_module_2_0_0_t *coll_reduce_module; mca_coll_base_module_2_1_0_t *coll_reduce_module;
mca_coll_base_module_reduce_scatter_fn_t coll_reduce_scatter; mca_coll_base_module_reduce_scatter_fn_t coll_reduce_scatter;
mca_coll_base_module_2_0_0_t *coll_reduce_scatter_module; mca_coll_base_module_2_1_0_t *coll_reduce_scatter_module;
mca_coll_base_module_reduce_scatter_block_fn_t coll_reduce_scatter_block; mca_coll_base_module_reduce_scatter_block_fn_t coll_reduce_scatter_block;
mca_coll_base_module_2_0_0_t *coll_reduce_scatter_block_module; mca_coll_base_module_2_1_0_t *coll_reduce_scatter_block_module;
mca_coll_base_module_scan_fn_t coll_scan; mca_coll_base_module_scan_fn_t coll_scan;
mca_coll_base_module_2_0_0_t *coll_scan_module; mca_coll_base_module_2_1_0_t *coll_scan_module;
mca_coll_base_module_scatter_fn_t coll_scatter; mca_coll_base_module_scatter_fn_t coll_scatter;
mca_coll_base_module_2_0_0_t *coll_scatter_module; mca_coll_base_module_2_1_0_t *coll_scatter_module;
mca_coll_base_module_scatterv_fn_t coll_scatterv; mca_coll_base_module_scatterv_fn_t coll_scatterv;
mca_coll_base_module_2_0_0_t *coll_scatterv_module; mca_coll_base_module_2_1_0_t *coll_scatterv_module;
/* nonblocking collectives */ /* nonblocking collectives */
mca_coll_base_module_iallgather_fn_t coll_iallgather; mca_coll_base_module_iallgather_fn_t coll_iallgather;
mca_coll_base_module_2_0_0_t *coll_iallgather_module; mca_coll_base_module_2_1_0_t *coll_iallgather_module;
mca_coll_base_module_iallgatherv_fn_t coll_iallgatherv; mca_coll_base_module_iallgatherv_fn_t coll_iallgatherv;
mca_coll_base_module_2_0_0_t *coll_iallgatherv_module; mca_coll_base_module_2_1_0_t *coll_iallgatherv_module;
mca_coll_base_module_iallreduce_fn_t coll_iallreduce; mca_coll_base_module_iallreduce_fn_t coll_iallreduce;
mca_coll_base_module_2_0_0_t *coll_iallreduce_module; mca_coll_base_module_2_1_0_t *coll_iallreduce_module;
mca_coll_base_module_ialltoall_fn_t coll_ialltoall; mca_coll_base_module_ialltoall_fn_t coll_ialltoall;
mca_coll_base_module_2_0_0_t *coll_ialltoall_module; mca_coll_base_module_2_1_0_t *coll_ialltoall_module;
mca_coll_base_module_ialltoallv_fn_t coll_ialltoallv; mca_coll_base_module_ialltoallv_fn_t coll_ialltoallv;
mca_coll_base_module_2_0_0_t *coll_ialltoallv_module; mca_coll_base_module_2_1_0_t *coll_ialltoallv_module;
mca_coll_base_module_ialltoallw_fn_t coll_ialltoallw; mca_coll_base_module_ialltoallw_fn_t coll_ialltoallw;
mca_coll_base_module_2_0_0_t *coll_ialltoallw_module; mca_coll_base_module_2_1_0_t *coll_ialltoallw_module;
mca_coll_base_module_ibarrier_fn_t coll_ibarrier; mca_coll_base_module_ibarrier_fn_t coll_ibarrier;
mca_coll_base_module_2_0_0_t *coll_ibarrier_module; mca_coll_base_module_2_1_0_t *coll_ibarrier_module;
mca_coll_base_module_ibcast_fn_t coll_ibcast; mca_coll_base_module_ibcast_fn_t coll_ibcast;
mca_coll_base_module_2_0_0_t *coll_ibcast_module; mca_coll_base_module_2_1_0_t *coll_ibcast_module;
mca_coll_base_module_iexscan_fn_t coll_iexscan; mca_coll_base_module_iexscan_fn_t coll_iexscan;
mca_coll_base_module_2_0_0_t *coll_iexscan_module; mca_coll_base_module_2_1_0_t *coll_iexscan_module;
mca_coll_base_module_igather_fn_t coll_igather; mca_coll_base_module_igather_fn_t coll_igather;
mca_coll_base_module_2_0_0_t *coll_igather_module; mca_coll_base_module_2_1_0_t *coll_igather_module;
mca_coll_base_module_igatherv_fn_t coll_igatherv; mca_coll_base_module_igatherv_fn_t coll_igatherv;
mca_coll_base_module_2_0_0_t *coll_igatherv_module; mca_coll_base_module_2_1_0_t *coll_igatherv_module;
mca_coll_base_module_ireduce_fn_t coll_ireduce; mca_coll_base_module_ireduce_fn_t coll_ireduce;
mca_coll_base_module_2_0_0_t *coll_ireduce_module; mca_coll_base_module_2_1_0_t *coll_ireduce_module;
mca_coll_base_module_ireduce_scatter_fn_t coll_ireduce_scatter; mca_coll_base_module_ireduce_scatter_fn_t coll_ireduce_scatter;
mca_coll_base_module_2_0_0_t *coll_ireduce_scatter_module; mca_coll_base_module_2_1_0_t *coll_ireduce_scatter_module;
mca_coll_base_module_ireduce_scatter_block_fn_t coll_ireduce_scatter_block; mca_coll_base_module_ireduce_scatter_block_fn_t coll_ireduce_scatter_block;
mca_coll_base_module_2_0_0_t *coll_ireduce_scatter_block_module; mca_coll_base_module_2_1_0_t *coll_ireduce_scatter_block_module;
mca_coll_base_module_iscan_fn_t coll_iscan; mca_coll_base_module_iscan_fn_t coll_iscan;
mca_coll_base_module_2_0_0_t *coll_iscan_module; mca_coll_base_module_2_1_0_t *coll_iscan_module;
mca_coll_base_module_iscatter_fn_t coll_iscatter; mca_coll_base_module_iscatter_fn_t coll_iscatter;
mca_coll_base_module_2_0_0_t *coll_iscatter_module; mca_coll_base_module_2_1_0_t *coll_iscatter_module;
mca_coll_base_module_iscatterv_fn_t coll_iscatterv; mca_coll_base_module_iscatterv_fn_t coll_iscatterv;
mca_coll_base_module_2_0_0_t *coll_iscatterv_module; mca_coll_base_module_2_1_0_t *coll_iscatterv_module;
/* neighborhood collectives */ /* neighborhood collectives */
mca_coll_base_module_allgather_fn_t coll_neighbor_allgather; mca_coll_base_module_allgather_fn_t coll_neighbor_allgather;
mca_coll_base_module_2_0_0_t *coll_neighbor_allgather_module; mca_coll_base_module_2_1_0_t *coll_neighbor_allgather_module;
mca_coll_base_module_allgatherv_fn_t coll_neighbor_allgatherv; mca_coll_base_module_allgatherv_fn_t coll_neighbor_allgatherv;
mca_coll_base_module_2_0_0_t *coll_neighbor_allgatherv_module; mca_coll_base_module_2_1_0_t *coll_neighbor_allgatherv_module;
mca_coll_base_module_alltoall_fn_t coll_neighbor_alltoall; mca_coll_base_module_alltoall_fn_t coll_neighbor_alltoall;
mca_coll_base_module_2_0_0_t *coll_neighbor_alltoall_module; mca_coll_base_module_2_1_0_t *coll_neighbor_alltoall_module;
mca_coll_base_module_alltoallv_fn_t coll_neighbor_alltoallv; mca_coll_base_module_alltoallv_fn_t coll_neighbor_alltoallv;
mca_coll_base_module_2_0_0_t *coll_neighbor_alltoallv_module; mca_coll_base_module_2_1_0_t *coll_neighbor_alltoallv_module;
mca_coll_base_module_neighbor_alltoallw_fn_t coll_neighbor_alltoallw; mca_coll_base_module_neighbor_alltoallw_fn_t coll_neighbor_alltoallw;
mca_coll_base_module_2_0_0_t *coll_neighbor_alltoallw_module; mca_coll_base_module_2_1_0_t *coll_neighbor_alltoallw_module;
mca_coll_base_module_iallgather_fn_t coll_ineighbor_allgather; mca_coll_base_module_iallgather_fn_t coll_ineighbor_allgather;
mca_coll_base_module_2_0_0_t *coll_ineighbor_allgather_module; mca_coll_base_module_2_1_0_t *coll_ineighbor_allgather_module;
mca_coll_base_module_iallgatherv_fn_t coll_ineighbor_allgatherv; mca_coll_base_module_iallgatherv_fn_t coll_ineighbor_allgatherv;
mca_coll_base_module_2_0_0_t *coll_ineighbor_allgatherv_module; mca_coll_base_module_2_1_0_t *coll_ineighbor_allgatherv_module;
mca_coll_base_module_ialltoall_fn_t coll_ineighbor_alltoall; mca_coll_base_module_ialltoall_fn_t coll_ineighbor_alltoall;
mca_coll_base_module_2_0_0_t *coll_ineighbor_alltoall_module; mca_coll_base_module_2_1_0_t *coll_ineighbor_alltoall_module;
mca_coll_base_module_ialltoallv_fn_t coll_ineighbor_alltoallv; mca_coll_base_module_ialltoallv_fn_t coll_ineighbor_alltoallv;
mca_coll_base_module_2_0_0_t *coll_ineighbor_alltoallv_module; mca_coll_base_module_2_1_0_t *coll_ineighbor_alltoallv_module;
mca_coll_base_module_ineighbor_alltoallw_fn_t coll_ineighbor_alltoallw; mca_coll_base_module_ineighbor_alltoallw_fn_t coll_ineighbor_alltoallw;
mca_coll_base_module_2_0_0_t *coll_ineighbor_alltoallw_module; mca_coll_base_module_2_1_0_t *coll_ineighbor_alltoallw_module;
}; };
typedef struct mca_coll_base_comm_coll_t mca_coll_base_comm_coll_t; typedef struct mca_coll_base_comm_coll_t mca_coll_base_comm_coll_t;

Просмотреть файл

@ -13,6 +13,8 @@
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -145,132 +147,132 @@ int NBC_Progress(NBC_Handle *handle);
int ompi_coll_libnbc_iallgather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_iallgather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iallgatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, int ompi_coll_libnbc_iallgatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iallreduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int ompi_coll_libnbc_iallreduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ialltoall(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_ialltoall(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ialltoallv(void* sendbuf, int *sendcounts, int *sdispls, int ompi_coll_libnbc_ialltoallv(void* sendbuf, int *sendcounts, int *sdispls,
MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ialltoallw(void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t **sdtypes, int ompi_coll_libnbc_ialltoallw(void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t **sdtypes,
void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t **rdtypes, void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t **rdtypes,
struct ompi_communicator_t *comm, ompi_request_t **request, struct ompi_communicator_t *comm, ompi_request_t **request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t ** request, int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ibcast(void *buffer, int count, MPI_Datatype datatype, int root, int ompi_coll_libnbc_ibcast(void *buffer, int count, MPI_Datatype datatype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iexscan(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype, int ompi_coll_libnbc_iexscan(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t **request, struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t **request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_igather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_igather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_igatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, int ompi_coll_libnbc_igatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ireduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ireduce_scatter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce_scatter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ireduce_scatter_block(void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype, int ompi_coll_libnbc_ireduce_scatter_block(void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_op_t *op, struct ompi_communicator_t *comm,
ompi_request_t **request, ompi_request_t **request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iscan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int ompi_coll_libnbc_iscan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iscatter(void* sendbuf, int sendcount, MPI_Datatype sendtype, int ompi_coll_libnbc_iscatter(void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iscatterv(void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, int ompi_coll_libnbc_iscatterv(void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iallgather_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_iallgather_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iallgatherv_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, int ompi_coll_libnbc_iallgatherv_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iallreduce_inter(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int ompi_coll_libnbc_iallreduce_inter(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ialltoall_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_ialltoall_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ialltoallv_inter(void* sendbuf, int *sendcounts, int *sdispls, int ompi_coll_libnbc_ialltoallv_inter(void* sendbuf, int *sendcounts, int *sdispls,
MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ialltoallw_inter(void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t **sdtypes, int ompi_coll_libnbc_ialltoallw_inter(void *sbuf, int *scounts, int *sdisps, struct ompi_datatype_t **sdtypes,
void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t **rdtypes, void *rbuf, int *rcounts, int *rdisps, struct ompi_datatype_t **rdtypes,
struct ompi_communicator_t *comm, ompi_request_t **request, struct ompi_communicator_t *comm, ompi_request_t **request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_request_t ** request, int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ibcast_inter(void *buffer, int count, MPI_Datatype datatype, int root, int ompi_coll_libnbc_ibcast_inter(void *buffer, int count, MPI_Datatype datatype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_igather_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_igather_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_igatherv_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, int ompi_coll_libnbc_igatherv_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ireduce_inter(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce_inter(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ireduce_scatter_inter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce_scatter_inter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ireduce_scatter_block_inter(void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype, int ompi_coll_libnbc_ireduce_scatter_block_inter(void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_op_t *op, struct ompi_communicator_t *comm,
ompi_request_t **request, ompi_request_t **request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iscatter_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, int ompi_coll_libnbc_iscatter_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_iscatterv_inter(void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, int ompi_coll_libnbc_iscatterv_inter(void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ineighbor_allgather(void *sbuf, int scount, MPI_Datatype stype, void *rbuf, int ompi_coll_libnbc_ineighbor_allgather(void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm, int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_0_0_t *module); ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ineighbor_allgatherv(void *sbuf, int scount, MPI_Datatype stype, void *rbuf, int ompi_coll_libnbc_ineighbor_allgatherv(void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int *rcounts, int *displs, MPI_Datatype rtype, int *rcounts, int *displs, MPI_Datatype rtype,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ineighbor_alltoall(void *sbuf, int scount, MPI_Datatype stype, void *rbuf, int ompi_coll_libnbc_ineighbor_alltoall(void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm, int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_0_0_t *module); ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ineighbor_alltoallv(void *sbuf, int *scounts, int *sdispls, MPI_Datatype stype, int ompi_coll_libnbc_ineighbor_alltoallv(void *sbuf, int *scounts, int *sdispls, MPI_Datatype stype,
void *rbuf, int *rcounts, int *rdispls, MPI_Datatype rtype, void *rbuf, int *rcounts, int *rdispls, MPI_Datatype rtype,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
int ompi_coll_libnbc_ineighbor_alltoallw(void *sbuf, int *scounts, MPI_Aint *sdisps, MPI_Datatype *stypes, int ompi_coll_libnbc_ineighbor_alltoallw(void *sbuf, int *scounts, MPI_Aint *sdisps, MPI_Datatype *stypes,
void *rbuf, int *rcounts, MPI_Aint *rdisps, MPI_Datatype *rtypes, void *rbuf, int *rcounts, MPI_Aint *rdisps, MPI_Datatype *rtypes,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module); struct mca_coll_base_module_2_1_0_t *module);
END_C_DECLS END_C_DECLS

Просмотреть файл

@ -1,12 +1,14 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2012 Sandia National Laboratories. All rights reserved. * Copyright (c) 2012 Sandia National Laboratories. All rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -32,7 +34,7 @@
int ompi_coll_libnbc_ireduce_scatter_block(void* sendbuf, void* recvbuf, int recvcount, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce_scatter_block(void* sendbuf, void* recvbuf, int recvcount, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int peer, rank, maxr, p, r, res, count, offset, firstred; int peer, rank, maxr, p, r, res, count, offset, firstred;
MPI_Aint ext; MPI_Aint ext;
char *redbuf, *sbuf, inplace; char *redbuf, *sbuf, inplace;
@ -151,7 +153,7 @@ int ompi_coll_libnbc_ireduce_scatter_block(void* sendbuf, void* recvbuf, int rec
int ompi_coll_libnbc_ireduce_scatter_block_inter(void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype, int ompi_coll_libnbc_ireduce_scatter_block_inter(void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_op_t *op, struct ompi_communicator_t *comm,
ompi_request_t **request, struct mca_coll_base_module_2_0_0_t *module) { ompi_request_t **request, struct mca_coll_base_module_2_1_0_t *module) {
int peer, rank, res, count, rsize; int peer, rank, res, count, rsize;
MPI_Aint ext; MPI_Aint ext;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -35,7 +37,7 @@ int NBC_Allgather_args_compare(NBC_Allgather_args *a, NBC_Allgather_args *b, voi
* each node receives from it's left (modulo p) neighbor */ * each node receives from it's left (modulo p) neighbor */
int ompi_coll_libnbc_iallgather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_iallgather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, p, res, r; int rank, p, res, r;
MPI_Aint rcvext; MPI_Aint rcvext;
@ -138,7 +140,7 @@ int ompi_coll_libnbc_iallgather(void* sendbuf, int sendcount, MPI_Datatype sendt
int ompi_coll_libnbc_iallgather_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_iallgather_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, res, r, rsize; int rank, res, r, rsize;
MPI_Aint rcvext; MPI_Aint rcvext;

Просмотреть файл

@ -1,15 +1,17 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
* Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
*/ */
#include "nbc_internal.h" #include "nbc_internal.h"
@ -28,7 +30,7 @@
* each node receives from node (rank-2)%p recvcounts[(rank+2)%p] elements */ * each node receives from node (rank-2)%p recvcounts[(rank+2)%p] elements */
int ompi_coll_libnbc_iallgatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, int ompi_coll_libnbc_iallgatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, p, res, r, speer, rpeer; int rank, p, res, r, speer, rpeer;
MPI_Aint rcvext; MPI_Aint rcvext;
@ -92,7 +94,7 @@ int ompi_coll_libnbc_iallgatherv(void* sendbuf, int sendcount, MPI_Datatype send
int ompi_coll_libnbc_iallgatherv_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, int ompi_coll_libnbc_iallgatherv_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, res, r, rsize; int rank, res, r, rsize;
MPI_Aint rcvext; MPI_Aint rcvext;

Просмотреть файл

@ -1,11 +1,13 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -40,7 +42,7 @@ int NBC_Allreduce_args_compare(NBC_Allreduce_args *a, NBC_Allreduce_args *b, voi
int ompi_coll_libnbc_iallreduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int ompi_coll_libnbc_iallreduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, p, res; int rank, p, res;
OPAL_PTRDIFF_TYPE ext, lb; OPAL_PTRDIFF_TYPE ext, lb;
@ -143,7 +145,7 @@ int ompi_coll_libnbc_iallreduce(void* sendbuf, void* recvbuf, int count, MPI_Dat
int ompi_coll_libnbc_iallreduce_inter(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int ompi_coll_libnbc_iallreduce_inter(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, res, size, rsize; int rank, res, size, rsize;
MPI_Aint ext; MPI_Aint ext;

Просмотреть файл

@ -7,6 +7,8 @@
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 NVIDIA Corporation. All rights reserved. * Copyright (c) 2014 NVIDIA Corporation. All rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -39,7 +41,7 @@ int NBC_Alltoall_args_compare(NBC_Alltoall_args *a, NBC_Alltoall_args *b, void *
/* simple linear MPI_Ialltoall the (simple) algorithm just sends to all nodes */ /* simple linear MPI_Ialltoall the (simple) algorithm just sends to all nodes */
int ompi_coll_libnbc_ialltoall(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_ialltoall(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, p, res, a2asize, sndsize, datasize; int rank, p, res, a2asize, sndsize, datasize;
NBC_Schedule *schedule; NBC_Schedule *schedule;
@ -200,7 +202,7 @@ int ompi_coll_libnbc_ialltoall(void* sendbuf, int sendcount, MPI_Datatype sendty
int ompi_coll_libnbc_ialltoall_inter (void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_ialltoall_inter (void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, res, i, rsize; int rank, res, i, rsize;
MPI_Aint sndext, rcvext; MPI_Aint sndext, rcvext;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -18,7 +20,7 @@
int ompi_coll_libnbc_ialltoallv(void* sendbuf, int *sendcounts, int *sdispls, int ompi_coll_libnbc_ialltoallv(void* sendbuf, int *sendcounts, int *sdispls,
MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, p, res, i; int rank, p, res, i;
MPI_Aint sndext, rcvext; MPI_Aint sndext, rcvext;
@ -89,7 +91,7 @@ int ompi_coll_libnbc_ialltoallv(void* sendbuf, int *sendcounts, int *sdispls,
int ompi_coll_libnbc_ialltoallv_inter (void* sendbuf, int *sendcounts, int *sdispls, int ompi_coll_libnbc_ialltoallv_inter (void* sendbuf, int *sendcounts, int *sdispls,
MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, res, i, rsize; int rank, res, i, rsize;
MPI_Aint sndext, rcvext; MPI_Aint sndext, rcvext;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -18,7 +20,7 @@
int ompi_coll_libnbc_ialltoallw(void* sendbuf, int *sendcounts, int *sdispls, int ompi_coll_libnbc_ialltoallw(void* sendbuf, int *sendcounts, int *sdispls,
MPI_Datatype sendtypes[], void* recvbuf, int *recvcounts, int *rdispls, MPI_Datatype sendtypes[], void* recvbuf, int *recvcounts, int *rdispls,
MPI_Datatype recvtypes[], struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtypes[], struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, p, res, i; int rank, p, res, i;
NBC_Schedule *schedule; NBC_Schedule *schedule;
@ -84,7 +86,7 @@ int ompi_coll_libnbc_ialltoallw(void* sendbuf, int *sendcounts, int *sdispls,
int ompi_coll_libnbc_ialltoallw_inter (void* sendbuf, int *sendcounts, int *sdispls, int ompi_coll_libnbc_ialltoallw_inter (void* sendbuf, int *sendcounts, int *sdispls,
MPI_Datatype sendtypes[], void* recvbuf, int *recvcounts, int *rdispls, MPI_Datatype sendtypes[], void* recvbuf, int *recvcounts, int *rdispls,
MPI_Datatype recvtypes[], struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtypes[], struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, res, i, rsize; int rank, res, i, rsize;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -6,6 +6,8 @@
* rights reserved. * rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -14,7 +16,7 @@
/* Dissemination implementation of MPI_Ibarrier */ /* Dissemination implementation of MPI_Ibarrier */
int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t ** request, int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int round, rank, p, maxround, res, recvpeer, sendpeer; int round, rank, p, maxround, res, recvpeer, sendpeer;
NBC_Schedule *schedule; NBC_Schedule *schedule;
@ -91,7 +93,7 @@ int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t *
} }
int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_request_t ** request, int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, res, rsize, peer; int rank, res, rsize, peer;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -2,8 +2,10 @@
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -33,7 +35,7 @@ int NBC_Bcast_args_compare(NBC_Bcast_args *a, NBC_Bcast_args *b, void *param) {
int ompi_coll_libnbc_ibcast(void *buffer, int count, MPI_Datatype datatype, int root, int ompi_coll_libnbc_ibcast(void *buffer, int count, MPI_Datatype datatype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int rank, p, res, size, segsize; int rank, p, res, size, segsize;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -12,7 +14,7 @@
int ompi_coll_libnbc_ibcast_inter(void *buffer, int count, MPI_Datatype datatype, int root, int ompi_coll_libnbc_ibcast_inter(void *buffer, int count, MPI_Datatype datatype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res, size, peer; int rank, p, res, size, peer;
NBC_Schedule *schedule; NBC_Schedule *schedule;
NBC_Handle *handle; NBC_Handle *handle;

Просмотреть файл

@ -7,6 +7,8 @@
* rights reserved. * rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -40,7 +42,7 @@ int NBC_Scan_args_compare(NBC_Scan_args *a, NBC_Scan_args *b, void *param) {
*/ */
int ompi_coll_libnbc_iexscan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int ompi_coll_libnbc_iexscan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res; int rank, p, res;
MPI_Aint ext; MPI_Aint ext;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -7,6 +7,8 @@
* Copyright (c) 2013 The University of Tennessee and The University * Copyright (c) 2013 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights * of Tennessee Research Foundation. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -35,7 +37,7 @@ int NBC_Gather_args_compare(NBC_Gather_args *a, NBC_Gather_args *b, void *param)
int ompi_coll_libnbc_igather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_igather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res, i; int rank, p, res, i;
MPI_Aint rcvext = 0; MPI_Aint rcvext = 0;
NBC_Schedule *schedule; NBC_Schedule *schedule;
@ -140,7 +142,7 @@ int ompi_coll_libnbc_igather(void* sendbuf, int sendcount, MPI_Datatype sendtype
int ompi_coll_libnbc_igather_inter (void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, int ompi_coll_libnbc_igather_inter (void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res, i, rsize; int rank, p, res, i, rsize;
MPI_Aint rcvext = 0; MPI_Aint rcvext = 0;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -2,11 +2,13 @@
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2013 The University of Tennessee and The University * Copyright (c) 2013 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights * of Tennessee Research Foundation. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -18,10 +20,10 @@
* would not be sufficient ... we simply do not cache it */ * would not be sufficient ... we simply do not cache it */
int ompi_coll_libnbc_igatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, int ompi_coll_libnbc_igatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res, i; int rank, p, res, i;
MPI_Aint rcvext = 0; MPI_Aint rcvext = 0;
NBC_Schedule *schedule; NBC_Schedule *schedule;
@ -84,7 +86,7 @@ int ompi_coll_libnbc_igatherv(void* sendbuf, int sendcount, MPI_Datatype sendtyp
int ompi_coll_libnbc_igatherv_inter (void* sendbuf, int sendcount, MPI_Datatype sendtype, int ompi_coll_libnbc_igatherv_inter (void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res, i, rsize; int rank, p, res, i, rsize;
MPI_Aint rcvext; MPI_Aint rcvext;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -34,7 +36,7 @@ int NBC_Ineighbor_allgather_args_compare(NBC_Ineighbor_allgather_args *a, NBC_In
int ompi_coll_libnbc_ineighbor_allgather(void *sbuf, int scount, MPI_Datatype stype, void *rbuf, int ompi_coll_libnbc_ineighbor_allgather(void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm, int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_0_0_t *module) { ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module) {
int rank, size, res, worldsize; int rank, size, res, worldsize;
MPI_Aint sndext, rcvext; MPI_Aint sndext, rcvext;
NBC_Handle *handle; NBC_Handle *handle;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -35,7 +37,7 @@ int NBC_Ineighbor_allgatherv_args_compare(NBC_Ineighbor_allgatherv_args *a, NBC_
int ompi_coll_libnbc_ineighbor_allgatherv(void *sbuf, int scount, MPI_Datatype stype, void *rbuf, int ompi_coll_libnbc_ineighbor_allgatherv(void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int *rcounts, int *displs, MPI_Datatype rtype, int *rcounts, int *displs, MPI_Datatype rtype,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, size, res, worldsize; int rank, size, res, worldsize;
MPI_Aint sndext, rcvext; MPI_Aint sndext, rcvext;
NBC_Handle *handle; NBC_Handle *handle;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -33,7 +35,7 @@ int NBC_Ineighbor_alltoall_args_compare(NBC_Ineighbor_alltoall_args *a, NBC_Inei
int ompi_coll_libnbc_ineighbor_alltoall(void *sbuf, int scount, MPI_Datatype stype, void *rbuf, int ompi_coll_libnbc_ineighbor_alltoall(void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm, int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_0_0_t *module) { ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module) {
int rank, size, res, worldsize; int rank, size, res, worldsize;
MPI_Aint sndext, rcvext; MPI_Aint sndext, rcvext;
NBC_Handle *handle; NBC_Handle *handle;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -35,7 +37,7 @@ int NBC_Ineighbor_alltoallv_args_compare(NBC_Ineighbor_alltoallv_args *a, NBC_In
int ompi_coll_libnbc_ineighbor_alltoallv(void *sbuf, int *scounts, int *sdispls, MPI_Datatype stype, int ompi_coll_libnbc_ineighbor_alltoallv(void *sbuf, int *scounts, int *sdispls, MPI_Datatype stype,
void *rbuf, int *rcounts, int *rdispls, MPI_Datatype rtype, void *rbuf, int *rcounts, int *rdispls, MPI_Datatype rtype,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, size, res, worldsize; int rank, size, res, worldsize;
MPI_Aint sndext, rcvext; MPI_Aint sndext, rcvext;
NBC_Handle *handle; NBC_Handle *handle;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -34,7 +36,7 @@ int NBC_Ineighbor_alltoallw_args_compare(NBC_Ineighbor_alltoallw_args *a, NBC_In
int ompi_coll_libnbc_ineighbor_alltoallw(void *sbuf, int *scounts, MPI_Aint *sdisps, MPI_Datatype *stypes, int ompi_coll_libnbc_ineighbor_alltoallw(void *sbuf, int *scounts, MPI_Aint *sdisps, MPI_Datatype *stypes,
void *rbuf, int *rcounts, MPI_Aint *rdisps, MPI_Datatype *rtypes, void *rbuf, int *rcounts, MPI_Aint *rdisps, MPI_Datatype *rtypes,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, size, res, worldsize; int rank, size, res, worldsize;
MPI_Aint *sndexts, *rcvexts; MPI_Aint *sndexts, *rcvexts;
NBC_Handle *handle; NBC_Handle *handle;

Просмотреть файл

@ -6,6 +6,8 @@
* rights reserved. * rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -36,9 +38,9 @@ int NBC_Reduce_args_compare(NBC_Reduce_args *a, NBC_Reduce_args *b, void *param)
#endif #endif
/* the non-blocking reduce */ /* the non-blocking reduce */
int ompi_coll_libnbc_ireduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res, segsize, size; int rank, p, res, segsize, size;
MPI_Aint ext; MPI_Aint ext;
NBC_Schedule *schedule; NBC_Schedule *schedule;
@ -149,7 +151,7 @@ int ompi_coll_libnbc_ireduce(void* sendbuf, void* recvbuf, int count, MPI_Dataty
int ompi_coll_libnbc_ireduce_inter(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce_inter(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, res, rsize; int rank, res, rsize;
NBC_Schedule *schedule; NBC_Schedule *schedule;
MPI_Aint ext; MPI_Aint ext;

Просмотреть файл

@ -6,6 +6,8 @@
* rights reserved. * rights reserved.
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -29,9 +31,9 @@
* *
*/ */
int ompi_coll_libnbc_ireduce_scatter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce_scatter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int peer, rank, maxr, p, r, res, count, offset, firstred; int peer, rank, maxr, p, r, res, count, offset, firstred;
MPI_Aint ext; MPI_Aint ext;
char *redbuf, *sbuf, inplace; char *redbuf, *sbuf, inplace;
@ -154,7 +156,7 @@ submit_and_return:
int ompi_coll_libnbc_ireduce_scatter_inter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype, int ompi_coll_libnbc_ireduce_scatter_inter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request, MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int peer, rank, r, res, count, rsize, offset; int peer, rank, r, res, count, rsize, offset;
MPI_Aint ext; MPI_Aint ext;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -1,9 +1,11 @@
/* /*
* Copyright (c) 2006 The Trustees of Indiana University and Indiana * Copyright (c) 2006 The Trustees of Indiana University and Indiana
* University Research and Technology * University Research and Technology
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -35,9 +37,9 @@ int NBC_Scan_args_compare(NBC_Scan_args *a, NBC_Scan_args *b, void *param) {
* 3. all but rank p-1 do sends to it's right neigbor and exits * 3. all but rank p-1 do sends to it's right neigbor and exits
* *
*/ */
int ompi_coll_libnbc_iscan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int ompi_coll_libnbc_iscan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res; int rank, p, res;
MPI_Aint ext; MPI_Aint ext;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -9,6 +9,8 @@
* Copyright (c) 2013 The University of Tennessee and The University * Copyright (c) 2013 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights * of Tennessee Research Foundation. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -38,7 +40,7 @@ int NBC_Scatter_args_compare(NBC_Scatter_args *a, NBC_Scatter_args *b, void *par
int ompi_coll_libnbc_iscatter(void* sendbuf, int sendcount, MPI_Datatype sendtype, int ompi_coll_libnbc_iscatter(void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res, i; int rank, p, res, i;
MPI_Aint sndext = 0; MPI_Aint sndext = 0;
NBC_Schedule *schedule; NBC_Schedule *schedule;
@ -142,7 +144,7 @@ int ompi_coll_libnbc_iscatter(void* sendbuf, int sendcount, MPI_Datatype sendtyp
int ompi_coll_libnbc_iscatter_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype, int ompi_coll_libnbc_iscatter_inter(void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, res, i, rsize; int rank, res, i, rsize;
MPI_Aint sndext; MPI_Aint sndext;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -9,6 +9,8 @@
* Copyright (c) 2013 The University of Tennessee and The University * Copyright (c) 2013 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights * of Tennessee Research Foundation. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* *
* Author(s): Torsten Hoefler <htor@cs.indiana.edu> * Author(s): Torsten Hoefler <htor@cs.indiana.edu>
* *
@ -23,7 +25,7 @@
int ompi_coll_libnbc_iscatterv(void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, int ompi_coll_libnbc_iscatterv(void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, p, res, i; int rank, p, res, i;
MPI_Aint sndext; MPI_Aint sndext;
NBC_Schedule *schedule; NBC_Schedule *schedule;
@ -87,7 +89,7 @@ int ompi_coll_libnbc_iscatterv(void* sendbuf, int *sendcounts, int *displs, MPI_
int ompi_coll_libnbc_iscatterv_inter (void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, int ompi_coll_libnbc_iscatterv_inter (void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_0_0_t *module) { struct mca_coll_base_module_2_1_0_t *module) {
int rank, res, i, rsize; int rank, res, i, rsize;
MPI_Aint sndext; MPI_Aint sndext;
NBC_Schedule *schedule; NBC_Schedule *schedule;

Просмотреть файл

@ -7,6 +7,8 @@
* Copyright (c) 2014 The University of Tennessee and The University * Copyright (c) 2014 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights * of Tennessee Research Foundation. All rights
* reserved. * reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -51,7 +53,7 @@
struct avail_coll_t { struct avail_coll_t {
opal_list_item_t super; opal_list_item_t super;
int ac_priority; int ac_priority;
mca_coll_base_module_2_0_0_t *ac_module; mca_coll_base_module_2_1_0_t *ac_module;
}; };
typedef struct avail_coll_t avail_coll_t; typedef struct avail_coll_t avail_coll_t;

Просмотреть файл

@ -2510,7 +2510,7 @@ static int mca_coll_ml_fill_in_route_tab(mca_coll_ml_topology_t *topo, ompi_comm
static void init_coll_func_pointers(mca_coll_ml_module_t *ml_module) static void init_coll_func_pointers(mca_coll_ml_module_t *ml_module)
{ {
mca_coll_base_module_2_0_0_t *coll_base = &ml_module->super; mca_coll_base_module_2_1_0_t *coll_base = &ml_module->super;
int iboffload_used = int iboffload_used =
mca_coll_ml_check_if_bcol_is_used("iboffload", ml_module, COLL_ML_TOPO_MAX); mca_coll_ml_check_if_bcol_is_used("iboffload", ml_module, COLL_ML_TOPO_MAX);

Просмотреть файл

@ -1,5 +1,7 @@
/* /*
* Copyright (c) 2013 Sandia National Laboratories. All rights reserved. * Copyright (c) 2013 Sandia National Laboratories. All rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -171,7 +173,7 @@ ompi_coll_portals4_barrier_intra(struct ompi_communicator_t *comm,
int int
ompi_coll_portals4_ibarrier_intra(struct ompi_communicator_t *comm, ompi_coll_portals4_ibarrier_intra(struct ompi_communicator_t *comm,
ompi_request_t **ompi_req, ompi_request_t **ompi_req,
struct mca_coll_base_module_2_0_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module; mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module;
int ret, i, dim, hibit, mask, num_msgs; int ret, i, dim, hibit, mask, num_msgs;

Просмотреть файл

@ -78,6 +78,8 @@ static int sm_module_enable(mca_coll_base_module_t *module,
static bool have_local_peers(ompi_group_t *group, size_t size); static bool have_local_peers(ompi_group_t *group, size_t size);
static int bootstrap_comm(ompi_communicator_t *comm, static int bootstrap_comm(ompi_communicator_t *comm,
mca_coll_sm_module_t *module); mca_coll_sm_module_t *module);
static int mca_coll_sm_module_disable(mca_coll_base_module_t *module,
struct ompi_communicator_t *comm);
/* /*
* Module constructor * Module constructor
@ -88,6 +90,7 @@ static void mca_coll_sm_module_construct(mca_coll_sm_module_t *module)
module->sm_comm_data = NULL; module->sm_comm_data = NULL;
module->previous_reduce = NULL; module->previous_reduce = NULL;
module->previous_reduce_module = NULL; module->previous_reduce_module = NULL;
module->super.coll_module_disable = mca_coll_sm_module_disable;
} }
/* /*
@ -116,6 +119,20 @@ static void mca_coll_sm_module_destruct(mca_coll_sm_module_t *module)
module->enabled = false; module->enabled = false;
} }
/*
* Module disable
*/
static int mca_coll_sm_module_disable(mca_coll_base_module_t *module, struct ompi_communicator_t *comm)
{
mca_coll_sm_module_t *sm_module = (mca_coll_sm_module_t*) module;
if (NULL != sm_module->previous_reduce_module) {
sm_module->previous_reduce = NULL;
OBJ_RELEASE(sm_module->previous_reduce_module);
sm_module->previous_reduce_module = NULL;
}
return OMPI_SUCCESS;
}
OBJ_CLASS_INSTANCE(mca_coll_sm_module_t, OBJ_CLASS_INSTANCE(mca_coll_sm_module_t,
mca_coll_base_module_t, mca_coll_base_module_t,