better control for enable/disable specific coll APIs
This commit was SVN r23708.
Этот коммит содержится в:
родитель
47940f2aa0
Коммит
48274c1c77
@ -142,6 +142,42 @@ struct mca_coll_fca_component_t {
|
||||
/** MCA parameter: Enable FCA */
|
||||
int fca_enable;
|
||||
|
||||
/** MCA parameter: Enable FCA Barrier */
|
||||
int fca_enable_barrier;
|
||||
|
||||
/** MCA parameter: Enable FCA Bcast */
|
||||
int fca_enable_bcast;
|
||||
|
||||
/** MCA parameter: Enable FCA Reduce */
|
||||
int fca_enable_reduce;
|
||||
|
||||
/** MCA parameter: Enable FCA Reduce_Scatter */
|
||||
int fca_enable_reduce_scatter;
|
||||
|
||||
/** MCA parameter: Enable FCA Allreduce */
|
||||
int fca_enable_allreduce;
|
||||
|
||||
/** MCA parameter: Enable FCA Allgather */
|
||||
int fca_enable_allgather;
|
||||
|
||||
/** MCA parameter: Enable FCA Allgatherv */
|
||||
int fca_enable_allgatherv;
|
||||
|
||||
/** MCA parameter: Enable FCA Gather */
|
||||
int fca_enable_gather;
|
||||
|
||||
/** MCA parameter: Enable FCA Gatherv */
|
||||
int fca_enable_gatherv;
|
||||
|
||||
/** MCA parameter: Enable FCA AlltoAll */
|
||||
int fca_enable_alltoall;
|
||||
|
||||
/** MCA parameter: Enable FCA AlltoAllv */
|
||||
int fca_enable_alltoallv;
|
||||
|
||||
/** MCA parameter: Enable FCA AlltoAllw */
|
||||
int fca_enable_alltoallw;
|
||||
|
||||
/** MCA parameter: FCA NP */
|
||||
int fca_np;
|
||||
|
||||
@ -183,7 +219,20 @@ struct mca_coll_fca_module_t {
|
||||
mca_coll_base_module_t *previous_barrier_module;
|
||||
mca_coll_base_module_allgather_fn_t previous_allgather;
|
||||
mca_coll_base_module_t *previous_allgather_module;
|
||||
|
||||
mca_coll_base_module_allgatherv_fn_t previous_allgatherv;
|
||||
mca_coll_base_module_t *previous_allgatherv_module;
|
||||
mca_coll_base_module_alltoall_fn_t previous_alltoall;
|
||||
mca_coll_base_module_t *previous_alltoall_module;
|
||||
mca_coll_base_module_alltoallv_fn_t previous_alltoallv;
|
||||
mca_coll_base_module_t *previous_alltoallv_module;
|
||||
mca_coll_base_module_alltoallw_fn_t previous_alltoallw;
|
||||
mca_coll_base_module_t *previous_alltoallw_module;
|
||||
mca_coll_base_module_gather_fn_t previous_gather;
|
||||
mca_coll_base_module_t *previous_gather_module;
|
||||
mca_coll_base_module_gatherv_fn_t previous_gatherv;
|
||||
mca_coll_base_module_t *previous_gatherv_module;
|
||||
mca_coll_base_module_reduce_scatter_fn_t previous_reduce_scatter;
|
||||
mca_coll_base_module_t *previous_reduce_scatter_module;
|
||||
};
|
||||
typedef struct mca_coll_fca_module_t mca_coll_fca_module_t;
|
||||
|
||||
@ -217,6 +266,53 @@ int mca_coll_fca_allgather(void *sbuf, int scount, struct ompi_datatype_t *sdtyp
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module);
|
||||
|
||||
int mca_coll_fca_allgatherv(void *sbuf, int scount,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int *rcounts, int *disps,
|
||||
struct ompi_datatype_t *rdtype,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module);
|
||||
|
||||
int mca_coll_fca_alltoall(void *sbuf, int scount,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int rcount,
|
||||
struct ompi_datatype_t *rdtype,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module);
|
||||
|
||||
int mca_coll_fca_alltoallv(void *sbuf, int *scounts, int *sdisps,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int *rcounts, int *rdisps,
|
||||
struct ompi_datatype_t *rdtype,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module);
|
||||
|
||||
int mca_coll_fca_alltoallw(void *sbuf, int *scounts, int *sdisps,
|
||||
struct ompi_datatype_t **sdtypes,
|
||||
void *rbuf, int *rcounts, int *rdisps,
|
||||
struct ompi_datatype_t **rdtypes,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module);
|
||||
|
||||
int mca_coll_fca_gather(void *sbuf, int scount,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int rcount,
|
||||
struct ompi_datatype_t *rdtype,
|
||||
int root, struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module);
|
||||
|
||||
int mca_coll_fca_gatherv(void *sbuf, int scount,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int *rcounts, int *disps,
|
||||
struct ompi_datatype_t *rdtype, int root,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module);
|
||||
|
||||
int mca_coll_fca_reduce_scatter(void *sbuf, void *rbuf, int *rcounts,
|
||||
struct ompi_datatype_t *dtype,
|
||||
struct ompi_op_t *op,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module);
|
||||
|
||||
END_C_DECLS
|
||||
|
||||
|
@ -247,6 +247,80 @@ static int fca_register(void)
|
||||
64,
|
||||
&mca_coll_fca_component.fca_np);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_barrier",
|
||||
"[1|0|] Enable/Disable FCA Barrier support",
|
||||
false, false,
|
||||
1,
|
||||
&mca_coll_fca_component.fca_enable_barrier);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_bcast",
|
||||
"[1|0|] Enable/Disable FCA Bcast support",
|
||||
false, false,
|
||||
1,
|
||||
&mca_coll_fca_component.fca_enable_bcast);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_reduce",
|
||||
"[1|0|] Enable/Disable FCA Reduce support",
|
||||
false, false,
|
||||
1,
|
||||
&mca_coll_fca_component.fca_enable_reduce);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_reduce_scatter",
|
||||
"[1|0|] Enable/Disable FCA Reduce support",
|
||||
false, false,
|
||||
0,
|
||||
&mca_coll_fca_component.fca_enable_reduce_scatter);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_allreduce",
|
||||
"[1|0|] Enable/Disable FCA Allreduce support",
|
||||
false, false,
|
||||
1,
|
||||
&mca_coll_fca_component.fca_enable_allreduce);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_allgather",
|
||||
"[1|0|] Enable/Disable FCA Allgather support",
|
||||
false, false,
|
||||
0,
|
||||
&mca_coll_fca_component.fca_enable_allgather);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_allgatherv",
|
||||
"[1|0|] Enable/Disable FCA Allgatherv support",
|
||||
false, false,
|
||||
0,
|
||||
&mca_coll_fca_component.fca_enable_allgatherv);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_gather",
|
||||
"[1|0|] Enable/Disable FCA Gather support",
|
||||
false, false,
|
||||
0,
|
||||
&mca_coll_fca_component.fca_enable_gather);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_gatherv",
|
||||
"[1|0|] Enable/Disable FCA Gatherv support",
|
||||
false, false,
|
||||
0,
|
||||
&mca_coll_fca_component.fca_enable_gatherv);
|
||||
|
||||
|
||||
mca_base_param_reg_int(c, "enable_alltoall",
|
||||
"[1|0|] Enable/Disable FCA AlltoAll support",
|
||||
false, false,
|
||||
0,
|
||||
&mca_coll_fca_component.fca_enable_alltoall);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_alltoallv",
|
||||
"[1|0|] Enable/Disable FCA AlltoAllv support",
|
||||
false, false,
|
||||
0,
|
||||
&mca_coll_fca_component.fca_enable_alltoallv);
|
||||
|
||||
mca_base_param_reg_int(c, "enable_alltoallw",
|
||||
"[1|0|] Enable/Disable FCA AlltoAllw support",
|
||||
false, false,
|
||||
0,
|
||||
&mca_coll_fca_component.fca_enable_alltoallw);
|
||||
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -256,49 +256,33 @@ static void __destroy_fca_comm(mca_coll_fca_module_t *fca_module)
|
||||
fca_module->fca_comm_desc.comm_id);
|
||||
}
|
||||
|
||||
#define FCA_SAVE_PREV_COLL_API(__api) do {\
|
||||
fca_module->previous_ ## __api = comm->c_coll.coll_ ## __api;\
|
||||
fca_module->previous_ ## __api ## _module = comm->c_coll.coll_ ## __api ## _module;\
|
||||
OBJ_RETAIN(fca_module->previous_ ## __api ## _module);\
|
||||
if (!comm->c_coll.coll_ ## __api || !comm->c_coll.coll_ ## __api ## _module) {\
|
||||
FCA_VERBOSE(1, "(%d/%s): no underlying " # __api"; disqualifying myself",\
|
||||
comm->c_contextid, comm->c_name);\
|
||||
return OMPI_ERROR;\
|
||||
}\
|
||||
} while(0)
|
||||
|
||||
static int __save_coll_handlers(mca_coll_fca_module_t *fca_module)
|
||||
{
|
||||
ompi_communicator_t *comm = fca_module->comm;
|
||||
|
||||
if (!comm->c_coll.coll_reduce || !comm->c_coll.coll_reduce_module ||
|
||||
!comm->c_coll.coll_allreduce || !comm->c_coll.coll_allreduce_module ||
|
||||
!comm->c_coll.coll_bcast || !comm->c_coll.coll_bcast_module ||
|
||||
!comm->c_coll.coll_barrier || !comm->c_coll.coll_barrier_module ||
|
||||
!comm->c_coll.coll_allgather || !comm->c_coll.coll_allgather_module) {
|
||||
FCA_VERBOSE(1, "(%d/%s): no underlying reduce; disqualifying myself",
|
||||
comm->c_contextid, comm->c_name);
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
|
||||
fca_module->previous_allreduce = comm->c_coll.coll_allreduce;
|
||||
fca_module->previous_allreduce_module = comm->c_coll.coll_allreduce_module;
|
||||
OBJ_RETAIN(fca_module->previous_allreduce_module);
|
||||
FCA_VERBOSE(14, "saving fca_module->previous_allreduce_module=%p, fca_module->previous_allreduce=%p, fca_module=%p,fca_module->super.coll_allreduce=%p",
|
||||
fca_module->previous_allreduce_module, fca_module->previous_allreduce, fca_module, fca_module->super.coll_allreduce);
|
||||
|
||||
fca_module->previous_reduce = comm->c_coll.coll_reduce;
|
||||
fca_module->previous_reduce_module = comm->c_coll.coll_reduce_module;
|
||||
OBJ_RETAIN(fca_module->previous_reduce_module);
|
||||
FCA_VERBOSE(14, "saving fca_module->previous_reduce_module=%p, fca_module->previous_reduce=%p, fca_module=%p,fca_module->super.coll_reduce=%p",
|
||||
fca_module->previous_reduce_module, fca_module->previous_reduce, fca_module, fca_module->super.coll_reduce);
|
||||
|
||||
fca_module->previous_bcast = comm->c_coll.coll_bcast;
|
||||
fca_module->previous_bcast_module = comm->c_coll.coll_bcast_module;
|
||||
OBJ_RETAIN(fca_module->previous_bcast_module);
|
||||
FCA_VERBOSE(14, "saving fca_module->bcast=%p, fca_module->bcast_module=%p, fca_module=%p, fca_module->super.coll_bcast=%p",
|
||||
fca_module->previous_bcast, fca_module->previous_bcast_module, fca_module, fca_module->super.coll_bcast);
|
||||
|
||||
fca_module->previous_barrier = comm->c_coll.coll_barrier;
|
||||
fca_module->previous_barrier_module = comm->c_coll.coll_barrier_module;
|
||||
OBJ_RETAIN(fca_module->previous_barrier_module);
|
||||
FCA_VERBOSE(14, "saving fca_module->barrier=%p, fca_module->barrier_module=%p, fca_module=%p, fca_module->super.coll_barrier=%p",
|
||||
fca_module->previous_barrier, fca_module->previous_barrier_module, fca_module, fca_module->super.coll_barrier);
|
||||
|
||||
fca_module->previous_allgather = comm->c_coll.coll_allgather;
|
||||
fca_module->previous_allgather_module = comm->c_coll.coll_allgather_module;
|
||||
OBJ_RETAIN(fca_module->previous_allgather_module);
|
||||
FCA_VERBOSE(14, "saving fca_module->allgather=%p, fca_module->allgather_module=%p, fca_module=%p, fca_module->super.coll_allgather=%p",
|
||||
fca_module->previous_allgather, fca_module->previous_allgather_module, fca_module, fca_module->super.coll_allgather);
|
||||
FCA_SAVE_PREV_COLL_API(barrier);
|
||||
FCA_SAVE_PREV_COLL_API(bcast);
|
||||
FCA_SAVE_PREV_COLL_API(reduce);
|
||||
FCA_SAVE_PREV_COLL_API(allreduce);
|
||||
FCA_SAVE_PREV_COLL_API(allgather);
|
||||
FCA_SAVE_PREV_COLL_API(allgatherv);
|
||||
FCA_SAVE_PREV_COLL_API(gather);
|
||||
FCA_SAVE_PREV_COLL_API(gatherv);
|
||||
FCA_SAVE_PREV_COLL_API(alltoall);
|
||||
FCA_SAVE_PREV_COLL_API(alltoallv);
|
||||
FCA_SAVE_PREV_COLL_API(alltoallw);
|
||||
FCA_SAVE_PREV_COLL_API(reduce_scatter);
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
@ -347,11 +331,19 @@ static void mca_coll_fca_module_clear(mca_coll_fca_module_t *fca_module)
|
||||
fca_module->num_local_procs = 0;
|
||||
fca_module->local_ranks = NULL;
|
||||
fca_module->fca_comm = NULL;
|
||||
fca_module->previous_allreduce = NULL;
|
||||
fca_module->previous_reduce = NULL;
|
||||
fca_module->previous_bcast = NULL;
|
||||
fca_module->previous_barrier = NULL;
|
||||
fca_module->previous_allgather = NULL;
|
||||
|
||||
fca_module->previous_barrier = NULL;
|
||||
fca_module->previous_bcast = NULL;
|
||||
fca_module->previous_reduce = NULL;
|
||||
fca_module->previous_allreduce = NULL;
|
||||
fca_module->previous_allgather = NULL;
|
||||
fca_module->previous_allgatherv = NULL;
|
||||
fca_module->previous_gather = NULL;
|
||||
fca_module->previous_gatherv = NULL;
|
||||
fca_module->previous_alltoall = NULL;
|
||||
fca_module->previous_alltoallv = NULL;
|
||||
fca_module->previous_alltoallw = NULL;
|
||||
fca_module->previous_reduce_scatter = NULL;
|
||||
}
|
||||
|
||||
static void mca_coll_fca_module_construct(mca_coll_fca_module_t *fca_module)
|
||||
@ -364,13 +356,18 @@ static void mca_coll_fca_module_destruct(mca_coll_fca_module_t *fca_module)
|
||||
{
|
||||
FCA_VERBOSE(5, "==>");
|
||||
int rc = OMPI_SUCCESS;
|
||||
|
||||
OBJ_RELEASE(fca_module->previous_allreduce_module);
|
||||
OBJ_RELEASE(fca_module->previous_reduce_module);
|
||||
OBJ_RELEASE(fca_module->previous_bcast_module);
|
||||
OBJ_RELEASE(fca_module->previous_barrier_module);
|
||||
OBJ_RELEASE(fca_module->previous_bcast_module);
|
||||
OBJ_RELEASE(fca_module->previous_reduce_module);
|
||||
OBJ_RELEASE(fca_module->previous_allreduce_module);
|
||||
OBJ_RELEASE(fca_module->previous_allgather_module);
|
||||
|
||||
OBJ_RELEASE(fca_module->previous_allgatherv_module);
|
||||
OBJ_RELEASE(fca_module->previous_gather_module);
|
||||
OBJ_RELEASE(fca_module->previous_gatherv_module);
|
||||
OBJ_RELEASE(fca_module->previous_alltoall_module);
|
||||
OBJ_RELEASE(fca_module->previous_alltoallv_module);
|
||||
OBJ_RELEASE(fca_module->previous_alltoallw_module);
|
||||
OBJ_RELEASE(fca_module->previous_reduce_scatter_module);
|
||||
if (fca_module->fca_comm)
|
||||
__destroy_fca_comm(fca_module);
|
||||
|
||||
@ -409,19 +406,19 @@ mca_coll_fca_comm_query(struct ompi_communicator_t *comm, int *priority)
|
||||
|
||||
fca_module->super.coll_module_enable = mca_coll_fca_module_enable;
|
||||
fca_module->super.ft_event = mca_coll_fca_ft_event;
|
||||
fca_module->super.coll_allgather = mca_coll_fca_allgather;
|
||||
fca_module->super.coll_allgatherv = NULL;
|
||||
fca_module->super.coll_allreduce = mca_coll_fca_allreduce;
|
||||
fca_module->super.coll_alltoall = NULL;
|
||||
fca_module->super.coll_alltoallv = NULL;
|
||||
fca_module->super.coll_alltoallw = NULL;
|
||||
fca_module->super.coll_barrier = mca_coll_fca_barrier;
|
||||
fca_module->super.coll_bcast = mca_coll_fca_bcast;
|
||||
fca_module->super.coll_allgather = mca_coll_fca_component.fca_enable_allgather? mca_coll_fca_allgather : NULL;
|
||||
fca_module->super.coll_allgatherv = mca_coll_fca_component.fca_enable_allgatherv? mca_coll_fca_allgatherv : NULL;
|
||||
fca_module->super.coll_allreduce = mca_coll_fca_component.fca_enable_allreduce? mca_coll_fca_allreduce : NULL;
|
||||
fca_module->super.coll_alltoall = mca_coll_fca_component.fca_enable_alltoall? mca_coll_fca_alltoall : NULL;
|
||||
fca_module->super.coll_alltoallv = mca_coll_fca_component.fca_enable_alltoallv? mca_coll_fca_alltoallv : NULL;
|
||||
fca_module->super.coll_alltoallw = mca_coll_fca_component.fca_enable_alltoallw? mca_coll_fca_alltoallw : NULL;
|
||||
fca_module->super.coll_barrier = mca_coll_fca_component.fca_enable_barrier? mca_coll_fca_barrier : NULL;
|
||||
fca_module->super.coll_bcast = mca_coll_fca_component.fca_enable_bcast? mca_coll_fca_bcast : NULL;
|
||||
fca_module->super.coll_exscan = NULL;
|
||||
fca_module->super.coll_gather = NULL;
|
||||
fca_module->super.coll_gatherv = NULL;
|
||||
fca_module->super.coll_reduce = mca_coll_fca_reduce;
|
||||
fca_module->super.coll_reduce_scatter = NULL;
|
||||
fca_module->super.coll_gather = mca_coll_fca_component.fca_enable_gather? mca_coll_fca_gather : NULL;
|
||||
fca_module->super.coll_gatherv = mca_coll_fca_component.fca_enable_gatherv? mca_coll_fca_gatherv : NULL;
|
||||
fca_module->super.coll_reduce = mca_coll_fca_component.fca_enable_reduce? mca_coll_fca_reduce : NULL;
|
||||
fca_module->super.coll_reduce_scatter = mca_coll_fca_component.fca_enable_reduce_scatter? mca_coll_fca_reduce_scatter : NULL;
|
||||
fca_module->super.coll_scan = NULL;
|
||||
fca_module->super.coll_scatter = NULL;
|
||||
fca_module->super.coll_scatterv = NULL;
|
||||
|
@ -284,7 +284,7 @@ int mca_coll_fca_allgather(void *sbuf, int scount, struct ompi_datatype_t *sdtyp
|
||||
mca_coll_base_module_t *module)
|
||||
{
|
||||
mca_coll_fca_module_t *fca_module = (mca_coll_fca_module_t*)module;
|
||||
fca_gather_spec_t spec;
|
||||
fca_gather_spec_t spec = {0,};
|
||||
int ret;
|
||||
|
||||
spec.sbuf = sbuf;
|
||||
@ -315,3 +315,98 @@ orig_allgather:
|
||||
comm, fca_module->previous_allgather_module);
|
||||
|
||||
}
|
||||
|
||||
|
||||
int mca_coll_fca_allgatherv(void *sbuf, int scount,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int *rcounts, int *disps,
|
||||
struct ompi_datatype_t *rdtype,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module)
|
||||
{
|
||||
mca_coll_fca_module_t *fca_module = (mca_coll_fca_module_t*)module;
|
||||
/* not implemented yet */
|
||||
return fca_module->previous_allgatherv(sbuf, scount, sdtype, rbuf, rcounts, disps, rdtype,
|
||||
comm, fca_module->previous_allgatherv_module);
|
||||
}
|
||||
|
||||
int mca_coll_fca_alltoall(void *sbuf, int scount,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int rcount,
|
||||
struct ompi_datatype_t *rdtype,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module)
|
||||
{
|
||||
mca_coll_fca_module_t *fca_module = (mca_coll_fca_module_t*)module;
|
||||
/* not implemented yet */
|
||||
return fca_module->previous_alltoall(sbuf, scount, sdtype, rbuf, rcount, rdtype,
|
||||
comm, fca_module->previous_alltoall_module);
|
||||
}
|
||||
|
||||
int mca_coll_fca_alltoallv(void *sbuf, int *scounts, int *sdisps,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int *rcounts, int *rdisps,
|
||||
struct ompi_datatype_t *rdtype,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module)
|
||||
{
|
||||
mca_coll_fca_module_t *fca_module = (mca_coll_fca_module_t*)module;
|
||||
/* not implemented yet */
|
||||
return fca_module->previous_alltoallv(sbuf, scounts, sdisps, sdtype, rbuf, rcounts, rdisps, rdtype,
|
||||
comm, fca_module->previous_alltoallv_module);
|
||||
}
|
||||
|
||||
|
||||
int mca_coll_fca_alltoallw(void *sbuf, int *scounts, int *sdisps,
|
||||
struct ompi_datatype_t **sdtypes,
|
||||
void *rbuf, int *rcounts, int *rdisps,
|
||||
struct ompi_datatype_t **rdtypes,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module)
|
||||
{
|
||||
mca_coll_fca_module_t *fca_module = (mca_coll_fca_module_t*)module;
|
||||
/* not implemented yet */
|
||||
return fca_module->previous_alltoallw(sbuf, scounts, sdisps, sdtypes, rbuf, rcounts, rdisps, rdtypes,
|
||||
comm, fca_module->previous_alltoallw_module);
|
||||
}
|
||||
|
||||
|
||||
int mca_coll_fca_gather(void *sbuf, int scount,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int rcount,
|
||||
struct ompi_datatype_t *rdtype,
|
||||
int root, struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module)
|
||||
{
|
||||
mca_coll_fca_module_t *fca_module = (mca_coll_fca_module_t*)module;
|
||||
/* not implemented yet */
|
||||
return fca_module->previous_gather(sbuf, scount, sdtype, rbuf, rcount, rdtype, root,
|
||||
comm, fca_module->previous_gather_module);
|
||||
}
|
||||
|
||||
int mca_coll_fca_gatherv(void *sbuf, int scount,
|
||||
struct ompi_datatype_t *sdtype,
|
||||
void *rbuf, int *rcounts, int *disps,
|
||||
struct ompi_datatype_t *rdtype, int root,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module)
|
||||
{
|
||||
mca_coll_fca_module_t *fca_module = (mca_coll_fca_module_t*)module;
|
||||
/* not implemented yet */
|
||||
return fca_module->previous_gatherv(sbuf, scount, sdtype, rbuf, rcounts, disps, rdtype, root,
|
||||
comm, fca_module->previous_gatherv_module);
|
||||
}
|
||||
|
||||
int mca_coll_fca_reduce_scatter(void *sbuf, void *rbuf, int *rcounts,
|
||||
struct ompi_datatype_t *dtype,
|
||||
struct ompi_op_t *op,
|
||||
struct ompi_communicator_t *comm,
|
||||
mca_coll_base_module_t *module)
|
||||
{
|
||||
mca_coll_fca_module_t *fca_module = (mca_coll_fca_module_t*)module;
|
||||
/* not implemented yet */
|
||||
return fca_module->previous_reduce_scatter(sbuf, rbuf, rcounts, dtype, op,
|
||||
comm, fca_module->previous_reduce_scatter_module);
|
||||
}
|
||||
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user