1
1

Merge pull request #2808 from jjhursey/fix/ibm/reduce-local-to-coll

coll: Move reduce_local into the coll framework
Этот коммит содержится в:
Josh Hursey 2017-02-14 15:54:15 -06:00 коммит произвёл GitHub
родитель a17b547430 78006f93a4
Коммит 0b273c2561
38 изменённых файлов: 360 добавлений и 185 удалений

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

@ -20,6 +20,7 @@
* Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -232,6 +233,28 @@ typedef struct ompi_communicator_t ompi_communicator_t;
* size so when the bitness changes the size of the handle changes.
* This is done so we don't end up needing a structure that is
* incredibly larger than necessary because of the bitness.
*
* This padding mechanism works as a (likely) compile time check for when the
* size of the ompi_communicator_t exceeds the predetermined size of the
* ompi_predefined_communicator_t. It also allows us to change the size of
* the ompi_communicator_t without impacting the size of the
* ompi_predefined_communicator_t structure for some number of additions.
*
* As an example:
* If the size of ompi_communicator_t is less than the size of the _PAD then
* the _PAD ensures that the size of the ompi_predefined_communicator_t is
* whatever size is defined below in the _PAD macro.
* However, if the size of the ompi_communicator_t grows larger than the _PAD
* (say by adding a few more function pointers to the structure) then the
* 'padding' variable will be initialized to a large number often triggering
* a 'array is too large' compile time error. This signals two things:
* 1) That the _PAD should be increased.
* 2) That users need to be made aware of the size change for the
* ompi_predefined_communicator_t structure.
*
* Q: So you just made a change to communicator structure, do you need to adjust
* the PREDEFINED_COMMUNICATOR_PAD macro?
* A: Most likely not, but it would be good to check.
*/
#define PREDEFINED_COMMUNICATOR_PAD (sizeof(void*) * 192)

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

@ -19,7 +19,7 @@
* reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016 IBM Corporation. All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -52,7 +52,7 @@ struct avail_coll_t {
opal_list_item_t super;
int ac_priority;
mca_coll_base_module_2_1_0_t *ac_module;
mca_coll_base_module_2_2_0_t *ac_module;
const char * ac_component_name;
};
typedef struct avail_coll_t avail_coll_t;
@ -65,16 +65,16 @@ static opal_list_t *check_components(opal_list_t * components,
ompi_communicator_t * comm);
static int check_one_component(ompi_communicator_t * comm,
const mca_base_component_t * component,
mca_coll_base_module_2_1_0_t ** module);
mca_coll_base_module_2_2_0_t ** module);
static int query(const mca_base_component_t * component,
ompi_communicator_t * comm, int *priority,
mca_coll_base_module_2_1_0_t ** module);
mca_coll_base_module_2_2_0_t ** module);
static int query_2_0_0(const mca_coll_base_component_2_0_0_t *
coll_component, ompi_communicator_t * comm,
int *priority,
mca_coll_base_module_2_1_0_t ** module);
mca_coll_base_module_2_2_0_t ** module);
/*
* Stuff for the OBJ interface
@ -203,6 +203,8 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
COPY(avail->ac_module, comm, ineighbor_alltoall);
COPY(avail->ac_module, comm, ineighbor_alltoallv);
COPY(avail->ac_module, comm, ineighbor_alltoallw);
COPY(avail->ac_module, comm, reduce_local);
}
/* release the original module reference and the list item */
OBJ_RELEASE(avail->ac_module);
@ -246,7 +248,8 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
CHECK_NULL(which_func, comm, ireduce_scatter) ||
((OMPI_COMM_IS_INTRA(comm)) && CHECK_NULL(which_func, comm, iscan)) ||
CHECK_NULL(which_func, comm, iscatter) ||
CHECK_NULL(which_func, comm, iscatterv)) {
CHECK_NULL(which_func, comm, iscatterv) ||
CHECK_NULL(which_func, comm, reduce_local) ) {
/* TODO -- Once the topology flags are set before coll_select then
* check if neighborhood collectives have been set. */
@ -285,7 +288,7 @@ static opal_list_t *check_components(opal_list_t * components,
int priority;
const mca_base_component_t *component;
mca_base_component_list_item_t *cli;
mca_coll_base_module_2_1_0_t *module;
mca_coll_base_module_2_2_0_t *module;
opal_list_t *selectable;
avail_coll_t *avail;
@ -341,7 +344,7 @@ static opal_list_t *check_components(opal_list_t * components,
*/
static int check_one_component(ompi_communicator_t * comm,
const mca_base_component_t * component,
mca_coll_base_module_2_1_0_t ** module)
mca_coll_base_module_2_2_0_t ** module)
{
int err;
int priority = -1;
@ -375,7 +378,7 @@ static int check_one_component(ompi_communicator_t * comm,
*/
static int query(const mca_base_component_t * component,
ompi_communicator_t * comm,
int *priority, mca_coll_base_module_2_1_0_t ** module)
int *priority, mca_coll_base_module_2_2_0_t ** module)
{
*module = NULL;
if (2 == component->mca_type_major_version &&
@ -395,9 +398,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,
ompi_communicator_t * comm, int *priority,
mca_coll_base_module_2_1_0_t ** module)
mca_coll_base_module_2_2_0_t ** module)
{
mca_coll_base_module_2_1_0_t *ret;
mca_coll_base_module_2_2_0_t *ret;
/* There's currently no need for conversion */

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

@ -14,6 +14,7 @@
* Copyright (c) 2013 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -98,6 +99,8 @@ int mca_coll_base_comm_unselect(ompi_communicator_t * comm)
CLOSE(comm, ineighbor_alltoallv);
CLOSE(comm, ineighbor_alltoallw);
CLOSE(comm, reduce_local);
/* All done */
return OMPI_SUCCESS;
}

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

@ -16,6 +16,7 @@
* reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -169,6 +170,11 @@ int ompi_coll_base_scatter_intra_binomial(SCATTER_ARGS);
/* ScatterV */
/* Reduce_local */
int mca_coll_base_reduce_local(const void *inbuf, void *inoutbuf, int count,
struct ompi_datatype_t * dtype, struct ompi_op_t * op,
mca_coll_base_module_t *module);
END_C_DECLS
#define COLL_BASE_UPDATE_BINTREE( OMPI_COMM, BASE_MODULE, ROOT ) \

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

@ -14,6 +14,7 @@
* reserved.
* Copyright (c) 2015-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -34,6 +35,15 @@
#include "ompi/mca/coll/base/coll_base_functions.h"
#include "coll_base_topo.h"
int mca_coll_base_reduce_local(const void *inbuf, void *inoutbuf, int count,
struct ompi_datatype_t * dtype, struct ompi_op_t * op,
mca_coll_base_module_t *module)
{
/* XXX -- CONST -- do not cast away const -- update ompi/op/op.h */
ompi_op_reduce(op, (void *)inbuf, inoutbuf, count, dtype);
return OMPI_SUCCESS;
}
/**
* This is a generic implementation of the reduce protocol. It used the tree
* provided as an argument and execute all operations using a segment of

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

@ -15,6 +15,7 @@
* reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -132,6 +133,8 @@ mca_coll_basic_comm_query(struct ompi_communicator_t *comm,
basic_module->super.coll_neighbor_alltoallv = mca_coll_basic_neighbor_alltoallv;
basic_module->super.coll_neighbor_alltoallw = mca_coll_basic_neighbor_alltoallw;
basic_module->super.coll_reduce_local = mca_coll_base_reduce_local;
return &(basic_module->super);
}

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

@ -17,6 +17,7 @@
* reserved.
* Copyright (c) 2014-2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -136,7 +137,7 @@ typedef int (*mca_coll_base_component_init_query_fn_t)
* provide a module with the requested functionality or NULL if the
* component should not be used on the given communicator.
*/
typedef struct mca_coll_base_module_2_1_0_t *
typedef struct mca_coll_base_module_2_2_0_t *
(*mca_coll_base_component_comm_query_2_0_0_fn_t)
(struct ompi_communicator_t *comm, int *priority);
@ -176,7 +177,7 @@ typedef struct mca_coll_base_module_2_1_0_t *
* @param[in] comm Communicator being created
*/
typedef int
(*mca_coll_base_module_enable_1_1_0_fn_t)(struct mca_coll_base_module_2_1_0_t* module,
(*mca_coll_base_module_enable_1_1_0_fn_t)(struct mca_coll_base_module_2_2_0_t* module,
struct ompi_communicator_t *comm);
@ -191,147 +192,147 @@ typedef int
* @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,
(*mca_coll_base_module_disable_1_2_0_fn_t)(struct mca_coll_base_module_2_2_0_t* module,
struct ompi_communicator_t *comm);
typedef int (*mca_coll_base_module_allgather_fn_t)
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_allgatherv_fn_t)
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void * rbuf, const int *rcounts, const int *disps, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_allreduce_fn_t)
(const 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_1_0_t *module);
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_alltoall_fn_t)
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_alltoallv_fn_t)
(const void *sbuf, const int *scounts, const int *sdisps, struct ompi_datatype_t *sdtype,
void *rbuf, const int *rcounts, const int *rdisps, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_alltoallw_fn_t)
(const void *sbuf, const int *scounts, const int *sdisps, struct ompi_datatype_t * const *sdtypes,
void *rbuf, const int *rcounts, const int *rdisps, struct ompi_datatype_t * const *rdtypes,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_barrier_fn_t)
(struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
(struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_bcast_fn_t)
(void *buff, int count, struct ompi_datatype_t *datatype, int root,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_exscan_fn_t)
(const 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_1_0_t *module);
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_gather_fn_t)
(const 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, struct mca_coll_base_module_2_1_0_t *module);
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_gatherv_fn_t)
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, const int *rcounts, const int *disps, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_reduce_fn_t)
(const 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_1_0_t *module);
struct ompi_op_t *op, int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_reduce_scatter_fn_t)
(const void *sbuf, void *rbuf, const int *rcounts, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_reduce_scatter_block_fn_t)
(const 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_1_0_t *module);
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_scan_fn_t)
(const 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_1_0_t *module);
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_scatter_fn_t)
(const 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, struct mca_coll_base_module_2_1_0_t *module);
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_scatterv_fn_t)
(const void *sbuf, const int *scounts, const int *disps, struct ompi_datatype_t *sdtype,
void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
int root, struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
/* nonblocking collectives */
typedef int (*mca_coll_base_module_iallgather_fn_t)
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_iallgatherv_fn_t)
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void * rbuf, const int *rcounts, const int *disps, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_iallreduce_fn_t)
(const 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 mca_coll_base_module_2_1_0_t *module);
ompi_request_t ** request, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ialltoall_fn_t)
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ialltoallv_fn_t)
(const void *sbuf, const int *scounts, const int *sdisps, struct ompi_datatype_t *sdtype,
void *rbuf, const int *rcounts, const int *rdisps, struct ompi_datatype_t *rdtype,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ialltoallw_fn_t)
(const void *sbuf, const int *scounts, const int *sdisps, struct ompi_datatype_t * const *sdtypes,
void *rbuf, const int *rcounts, const int *rdisps, struct ompi_datatype_t * const *rdtypes,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ibarrier_fn_t)
(struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ibcast_fn_t)
(void *buff, int count, struct ompi_datatype_t *datatype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_iexscan_fn_t)
(const 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 mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_igather_fn_t)
(const 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, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_igatherv_fn_t)
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
void *rbuf, const int *rcounts, const int *disps, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ireduce_fn_t)
(const 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 mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ireduce_scatter_fn_t)
(const void *sbuf, void *rbuf, const int *rcounts, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ireduce_scatter_block_fn_t)
(const 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 mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_iscan_fn_t)
(const 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 mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_iscatter_fn_t)
(const 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, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_iscatterv_fn_t)
(const void *sbuf, const int *scounts, const int *disps, struct ompi_datatype_t *sdtype,
void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
/*
* The signature of the neighborhood alltoallw differs from alltoallw
@ -339,12 +340,24 @@ typedef int (*mca_coll_base_module_iscatterv_fn_t)
typedef int (*mca_coll_base_module_neighbor_alltoallw_fn_t)
(const void *sbuf, const int *scounts, const MPI_Aint *sdisps, struct ompi_datatype_t * const *sdtypes,
void *rbuf, const int *rcounts, const MPI_Aint *rdisps, struct ompi_datatype_t * const *rdtypes,
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_1_0_t *module);
struct ompi_communicator_t *comm, struct mca_coll_base_module_2_2_0_t *module);
typedef int (*mca_coll_base_module_ineighbor_alltoallw_fn_t)
(const void *sbuf, const int *scounts, const MPI_Aint *sdisps, struct ompi_datatype_t * const *sdtypes,
void *rbuf, const int *rcounts, const MPI_Aint *rdisps, struct ompi_datatype_t * const *rdtypes,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
/*
* reduce_local
* Even though this is not a collective operation, it is related to the
* collectives. Adding to the framework allows a collective component the
* option of intercepting it, if desired.
*/
typedef int (*mca_coll_base_module_reduce_local_fn_t)
(const void *inbuf, void *inoutbuf, int count,
struct ompi_datatype_t * dtype, struct ompi_op_t * op,
struct mca_coll_base_module_2_2_0_t *module);
/**
* Fault Tolerance Awareness function.
@ -404,7 +417,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
* inherits from this one for use as the module structure.
*/
struct mca_coll_base_module_2_1_0_t {
struct mca_coll_base_module_2_2_0_t {
/** Collective modules all inherit from opal_object */
opal_object_t super;
@ -468,18 +481,20 @@ struct mca_coll_base_module_2_1_0_t {
/** 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;
mca_coll_base_module_disable_1_2_0_fn_t coll_module_disable;
mca_coll_base_module_reduce_local_fn_t coll_reduce_local;
/** Data storage for all the algorithms defined in the base. Should
not be used by other modules */
struct mca_coll_base_comm_t* base_data;
};
typedef struct mca_coll_base_module_2_1_0_t mca_coll_base_module_2_1_0_t;
typedef struct mca_coll_base_module_2_2_0_t mca_coll_base_module_2_2_0_t;
/** 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
interace. */
typedef struct mca_coll_base_module_2_1_0_t mca_coll_base_module_t;
typedef struct mca_coll_base_module_2_2_0_t mca_coll_base_module_t;
OMPI_DECLSPEC OBJ_CLASS_DECLARATION(mca_coll_base_module_t);
/**
@ -493,97 +508,100 @@ OMPI_DECLSPEC OBJ_CLASS_DECLARATION(mca_coll_base_module_t);
*/
struct mca_coll_base_comm_coll_t {
mca_coll_base_module_allgather_fn_t coll_allgather;
mca_coll_base_module_2_1_0_t *coll_allgather_module;
mca_coll_base_module_2_2_0_t *coll_allgather_module;
mca_coll_base_module_allgatherv_fn_t coll_allgatherv;
mca_coll_base_module_2_1_0_t *coll_allgatherv_module;
mca_coll_base_module_2_2_0_t *coll_allgatherv_module;
mca_coll_base_module_allreduce_fn_t coll_allreduce;
mca_coll_base_module_2_1_0_t *coll_allreduce_module;
mca_coll_base_module_2_2_0_t *coll_allreduce_module;
mca_coll_base_module_alltoall_fn_t coll_alltoall;
mca_coll_base_module_2_1_0_t *coll_alltoall_module;
mca_coll_base_module_2_2_0_t *coll_alltoall_module;
mca_coll_base_module_alltoallv_fn_t coll_alltoallv;
mca_coll_base_module_2_1_0_t *coll_alltoallv_module;
mca_coll_base_module_2_2_0_t *coll_alltoallv_module;
mca_coll_base_module_alltoallw_fn_t coll_alltoallw;
mca_coll_base_module_2_1_0_t *coll_alltoallw_module;
mca_coll_base_module_2_2_0_t *coll_alltoallw_module;
mca_coll_base_module_barrier_fn_t coll_barrier;
mca_coll_base_module_2_1_0_t *coll_barrier_module;
mca_coll_base_module_2_2_0_t *coll_barrier_module;
mca_coll_base_module_bcast_fn_t coll_bcast;
mca_coll_base_module_2_1_0_t *coll_bcast_module;
mca_coll_base_module_2_2_0_t *coll_bcast_module;
mca_coll_base_module_exscan_fn_t coll_exscan;
mca_coll_base_module_2_1_0_t *coll_exscan_module;
mca_coll_base_module_2_2_0_t *coll_exscan_module;
mca_coll_base_module_gather_fn_t coll_gather;
mca_coll_base_module_2_1_0_t *coll_gather_module;
mca_coll_base_module_2_2_0_t *coll_gather_module;
mca_coll_base_module_gatherv_fn_t coll_gatherv;
mca_coll_base_module_2_1_0_t *coll_gatherv_module;
mca_coll_base_module_2_2_0_t *coll_gatherv_module;
mca_coll_base_module_reduce_fn_t coll_reduce;
mca_coll_base_module_2_1_0_t *coll_reduce_module;
mca_coll_base_module_2_2_0_t *coll_reduce_module;
mca_coll_base_module_reduce_scatter_fn_t coll_reduce_scatter;
mca_coll_base_module_2_1_0_t *coll_reduce_scatter_module;
mca_coll_base_module_2_2_0_t *coll_reduce_scatter_module;
mca_coll_base_module_reduce_scatter_block_fn_t coll_reduce_scatter_block;
mca_coll_base_module_2_1_0_t *coll_reduce_scatter_block_module;
mca_coll_base_module_2_2_0_t *coll_reduce_scatter_block_module;
mca_coll_base_module_scan_fn_t coll_scan;
mca_coll_base_module_2_1_0_t *coll_scan_module;
mca_coll_base_module_2_2_0_t *coll_scan_module;
mca_coll_base_module_scatter_fn_t coll_scatter;
mca_coll_base_module_2_1_0_t *coll_scatter_module;
mca_coll_base_module_2_2_0_t *coll_scatter_module;
mca_coll_base_module_scatterv_fn_t coll_scatterv;
mca_coll_base_module_2_1_0_t *coll_scatterv_module;
mca_coll_base_module_2_2_0_t *coll_scatterv_module;
/* nonblocking collectives */
mca_coll_base_module_iallgather_fn_t coll_iallgather;
mca_coll_base_module_2_1_0_t *coll_iallgather_module;
mca_coll_base_module_2_2_0_t *coll_iallgather_module;
mca_coll_base_module_iallgatherv_fn_t coll_iallgatherv;
mca_coll_base_module_2_1_0_t *coll_iallgatherv_module;
mca_coll_base_module_2_2_0_t *coll_iallgatherv_module;
mca_coll_base_module_iallreduce_fn_t coll_iallreduce;
mca_coll_base_module_2_1_0_t *coll_iallreduce_module;
mca_coll_base_module_2_2_0_t *coll_iallreduce_module;
mca_coll_base_module_ialltoall_fn_t coll_ialltoall;
mca_coll_base_module_2_1_0_t *coll_ialltoall_module;
mca_coll_base_module_2_2_0_t *coll_ialltoall_module;
mca_coll_base_module_ialltoallv_fn_t coll_ialltoallv;
mca_coll_base_module_2_1_0_t *coll_ialltoallv_module;
mca_coll_base_module_2_2_0_t *coll_ialltoallv_module;
mca_coll_base_module_ialltoallw_fn_t coll_ialltoallw;
mca_coll_base_module_2_1_0_t *coll_ialltoallw_module;
mca_coll_base_module_2_2_0_t *coll_ialltoallw_module;
mca_coll_base_module_ibarrier_fn_t coll_ibarrier;
mca_coll_base_module_2_1_0_t *coll_ibarrier_module;
mca_coll_base_module_2_2_0_t *coll_ibarrier_module;
mca_coll_base_module_ibcast_fn_t coll_ibcast;
mca_coll_base_module_2_1_0_t *coll_ibcast_module;
mca_coll_base_module_2_2_0_t *coll_ibcast_module;
mca_coll_base_module_iexscan_fn_t coll_iexscan;
mca_coll_base_module_2_1_0_t *coll_iexscan_module;
mca_coll_base_module_2_2_0_t *coll_iexscan_module;
mca_coll_base_module_igather_fn_t coll_igather;
mca_coll_base_module_2_1_0_t *coll_igather_module;
mca_coll_base_module_2_2_0_t *coll_igather_module;
mca_coll_base_module_igatherv_fn_t coll_igatherv;
mca_coll_base_module_2_1_0_t *coll_igatherv_module;
mca_coll_base_module_2_2_0_t *coll_igatherv_module;
mca_coll_base_module_ireduce_fn_t coll_ireduce;
mca_coll_base_module_2_1_0_t *coll_ireduce_module;
mca_coll_base_module_2_2_0_t *coll_ireduce_module;
mca_coll_base_module_ireduce_scatter_fn_t coll_ireduce_scatter;
mca_coll_base_module_2_1_0_t *coll_ireduce_scatter_module;
mca_coll_base_module_2_2_0_t *coll_ireduce_scatter_module;
mca_coll_base_module_ireduce_scatter_block_fn_t coll_ireduce_scatter_block;
mca_coll_base_module_2_1_0_t *coll_ireduce_scatter_block_module;
mca_coll_base_module_2_2_0_t *coll_ireduce_scatter_block_module;
mca_coll_base_module_iscan_fn_t coll_iscan;
mca_coll_base_module_2_1_0_t *coll_iscan_module;
mca_coll_base_module_2_2_0_t *coll_iscan_module;
mca_coll_base_module_iscatter_fn_t coll_iscatter;
mca_coll_base_module_2_1_0_t *coll_iscatter_module;
mca_coll_base_module_2_2_0_t *coll_iscatter_module;
mca_coll_base_module_iscatterv_fn_t coll_iscatterv;
mca_coll_base_module_2_1_0_t *coll_iscatterv_module;
mca_coll_base_module_2_2_0_t *coll_iscatterv_module;
/* neighborhood collectives */
mca_coll_base_module_allgather_fn_t coll_neighbor_allgather;
mca_coll_base_module_2_1_0_t *coll_neighbor_allgather_module;
mca_coll_base_module_2_2_0_t *coll_neighbor_allgather_module;
mca_coll_base_module_allgatherv_fn_t coll_neighbor_allgatherv;
mca_coll_base_module_2_1_0_t *coll_neighbor_allgatherv_module;
mca_coll_base_module_2_2_0_t *coll_neighbor_allgatherv_module;
mca_coll_base_module_alltoall_fn_t coll_neighbor_alltoall;
mca_coll_base_module_2_1_0_t *coll_neighbor_alltoall_module;
mca_coll_base_module_2_2_0_t *coll_neighbor_alltoall_module;
mca_coll_base_module_alltoallv_fn_t coll_neighbor_alltoallv;
mca_coll_base_module_2_1_0_t *coll_neighbor_alltoallv_module;
mca_coll_base_module_2_2_0_t *coll_neighbor_alltoallv_module;
mca_coll_base_module_neighbor_alltoallw_fn_t coll_neighbor_alltoallw;
mca_coll_base_module_2_1_0_t *coll_neighbor_alltoallw_module;
mca_coll_base_module_2_2_0_t *coll_neighbor_alltoallw_module;
mca_coll_base_module_iallgather_fn_t coll_ineighbor_allgather;
mca_coll_base_module_2_1_0_t *coll_ineighbor_allgather_module;
mca_coll_base_module_2_2_0_t *coll_ineighbor_allgather_module;
mca_coll_base_module_iallgatherv_fn_t coll_ineighbor_allgatherv;
mca_coll_base_module_2_1_0_t *coll_ineighbor_allgatherv_module;
mca_coll_base_module_2_2_0_t *coll_ineighbor_allgatherv_module;
mca_coll_base_module_ialltoall_fn_t coll_ineighbor_alltoall;
mca_coll_base_module_2_1_0_t *coll_ineighbor_alltoall_module;
mca_coll_base_module_2_2_0_t *coll_ineighbor_alltoall_module;
mca_coll_base_module_ialltoallv_fn_t coll_ineighbor_alltoallv;
mca_coll_base_module_2_1_0_t *coll_ineighbor_alltoallv_module;
mca_coll_base_module_2_2_0_t *coll_ineighbor_alltoallv_module;
mca_coll_base_module_ineighbor_alltoallw_fn_t coll_ineighbor_alltoallw;
mca_coll_base_module_2_1_0_t *coll_ineighbor_alltoallw_module;
mca_coll_base_module_2_2_0_t *coll_ineighbor_alltoallw_module;
mca_coll_base_module_reduce_local_fn_t coll_reduce_local;
mca_coll_base_module_2_2_0_t *coll_reduce_local_module;
};
typedef struct mca_coll_base_comm_coll_t mca_coll_base_comm_coll_t;

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

@ -12,6 +12,7 @@
* Copyright (c) 2006-2007 University of Houston. All rights reserved.
* Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
* Copyright (c) 2013 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -29,6 +30,7 @@
#include "ompi/mca/coll/coll.h"
#include "ompi/mca/coll/base/base.h"
#include "ompi/mca/coll/base/coll_base_functions.h"
#include "ompi/mca/coll/base/coll_tags.h"
#include "ompi/mca/bml/base/base.h"
@ -133,6 +135,7 @@ mca_coll_inter_comm_query(struct ompi_communicator_t *comm, int *priority)
inter_module->super.coll_scan = NULL;
inter_module->super.coll_scatter = mca_coll_inter_scatter_inter;
inter_module->super.coll_scatterv = mca_coll_inter_scatterv_inter;
inter_module->super.coll_reduce_local = mca_coll_base_reduce_local;
return &(inter_module->super);
}

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

@ -15,7 +15,7 @@
* reserved.
* Copyright (c) 2014-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016 IBM Corporation. All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -158,132 +158,132 @@ int NBC_Progress(NBC_Handle *handle);
int ompi_coll_libnbc_iallgather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iallgatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *displs,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iallreduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ialltoall(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ialltoallv(const void* sendbuf, const int *sendcounts, const int *sdispls,
MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *rdispls,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ialltoallw(const void *sbuf, const int *scounts, const int *sdisps, struct ompi_datatype_t * const *sdtypes,
void *rbuf, const int *rcounts, const int *rdisps, struct ompi_datatype_t * const *rdtypes,
struct ompi_communicator_t *comm, ompi_request_t **request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ibcast(void *buffer, int count, MPI_Datatype datatype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iexscan(const 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 mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_igather(const 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,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_igatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ireduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ireduce_scatter(const void* sendbuf, void* recvbuf, const int *recvcounts, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ireduce_scatter_block(const 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 mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iscan(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iscatter(const 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,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iscatterv(const void* sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iallgather_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iallgatherv_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *displs,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iallreduce_inter(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ialltoall_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ialltoallv_inter(const void* sendbuf, const int *sendcounts, const int *sdispls,
MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *rdispls,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ialltoallw_inter(const void *sbuf, const int *scounts, const int *sdisps, struct ompi_datatype_t * const *sdtypes,
void *rbuf, const int *rcounts, const int *rdisps, struct ompi_datatype_t * const *rdtypes,
struct ompi_communicator_t *comm, ompi_request_t **request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
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 mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_igather_inter(const 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,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_igatherv_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ireduce_inter(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ireduce_scatter_inter(const void* sendbuf, void* recvbuf, const int *recvcounts, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ireduce_scatter_block_inter(const 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 mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iscatter_inter(const 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,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_iscatterv_inter(const void* sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ineighbor_allgather(const void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module);
ompi_request_t ** request, struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ineighbor_allgatherv(const void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
const int *rcounts, const int *displs, MPI_Datatype rtype,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ineighbor_alltoall(const void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module);
ompi_request_t ** request, struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ineighbor_alltoallv(const void *sbuf, const int *scounts, const int *sdispls, MPI_Datatype stype,
void *rbuf, const int *rcounts, const int *rdispls, MPI_Datatype rtype,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_libnbc_ineighbor_alltoallw(const void *sbuf, const int *scounts, const MPI_Aint *sdisps, struct ompi_datatype_t * const *stypes,
void *rbuf, const int *rcounts, const MPI_Aint *rdisps, struct ompi_datatype_t * const *rtypes,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
END_C_DECLS

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -41,7 +45,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 */
int ompi_coll_libnbc_iallgather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, p, res;
MPI_Aint rcvext;
@ -170,7 +174,7 @@ int ompi_coll_libnbc_iallgather(const void* sendbuf, int sendcount, MPI_Datatype
int ompi_coll_libnbc_iallgather_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int res, rsize;
MPI_Aint rcvext;

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

@ -13,6 +13,10 @@
* reserved.
* Copyright (c) 2014-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
*/
#include "nbc_internal.h"
@ -31,7 +35,7 @@
* each node receives from node (rank-2)%p recvcounts[(rank+2)%p] elements */
int ompi_coll_libnbc_iallgatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *displs,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, p, res, speer, rpeer;
MPI_Aint rcvext;
@ -115,7 +119,7 @@ int ompi_coll_libnbc_iallgatherv(const void* sendbuf, int sendcount, MPI_Datatyp
int ompi_coll_libnbc_iallgatherv_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *displs,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int res, rsize;
MPI_Aint rcvext;

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

@ -9,6 +9,10 @@
* reserved.
* Copyright (c) 2014-2017 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -50,7 +54,7 @@ int NBC_Allreduce_args_compare(NBC_Allreduce_args *a, NBC_Allreduce_args *b, voi
int ompi_coll_libnbc_iallreduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, p, res;
OPAL_PTRDIFF_TYPE ext, lb;
@ -198,7 +202,7 @@ int ompi_coll_libnbc_iallreduce(const void* sendbuf, void* recvbuf, int count, M
int ompi_coll_libnbc_iallreduce_inter(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, res, rsize;
size_t size;

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

@ -10,6 +10,10 @@
* Copyright (c) 2014 NVIDIA Corporation. All rights reserved.
* Copyright (c) 2014-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -51,7 +55,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 */
int ompi_coll_libnbc_ialltoall(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, p, res, datasize;
size_t a2asize, sndsize;
@ -282,7 +286,7 @@ int ompi_coll_libnbc_ialltoall(const void* sendbuf, int sendcount, MPI_Datatype
int ompi_coll_libnbc_ialltoall_inter (const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int res, rsize;
MPI_Aint sndext, rcvext;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015-2017 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -39,7 +43,7 @@ static inline int a2av_sched_inplace(int rank, int p, NBC_Schedule *schedule,
int ompi_coll_libnbc_ialltoallv(const void* sendbuf, const int *sendcounts, const int *sdispls,
MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *rdispls,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, p, res;
MPI_Aint sndext, rcvext;
@ -147,7 +151,7 @@ int ompi_coll_libnbc_ialltoallv(const void* sendbuf, const int *sendcounts, cons
int ompi_coll_libnbc_ialltoallv_inter (const void* sendbuf, const int *sendcounts, const int *sdispls,
MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *rdispls,
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int res, rsize;
MPI_Aint sndext, rcvext;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015-2017 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -39,7 +43,7 @@ static inline int a2aw_sched_inplace(int rank, int p, NBC_Schedule *schedule,
int ompi_coll_libnbc_ialltoallw(const void* sendbuf, const int *sendcounts, const int *sdispls,
struct ompi_datatype_t * const *sendtypes, void* recvbuf, const int *recvcounts, const int *rdispls,
struct ompi_datatype_t * const *recvtypes, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, p, res;
NBC_Schedule *schedule;
@ -132,7 +136,7 @@ int ompi_coll_libnbc_ialltoallw(const void* sendbuf, const int *sendcounts, cons
int ompi_coll_libnbc_ialltoallw_inter (const void* sendbuf, const int *sendcounts, const int *sdispls,
struct ompi_datatype_t * const *sendtypes, void* recvbuf, const int *recvcounts, const int *rdispls,
struct ompi_datatype_t * const *recvtypes, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int res, rsize;
NBC_Schedule *schedule;

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

@ -10,6 +10,10 @@
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Mellanox Technologies. All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -18,7 +22,7 @@
/* Dissemination implementation of MPI_Ibarrier */
int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, p, maxround, res, recvpeer, sendpeer;
NBC_Schedule *schedule;
@ -110,7 +114,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,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, res, rsize;
NBC_Schedule *schedule;

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

@ -9,7 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2016 IBM Corporation. All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -43,7 +46,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,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int rank, p, res, segsize;
size_t size;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -17,7 +21,7 @@
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 mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int res;
NBC_Schedule *schedule;
NBC_Handle *handle;

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

@ -9,6 +9,10 @@
* reserved.
* Copyright (c) 2014-2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -43,7 +47,7 @@ int NBC_Scan_args_compare(NBC_Scan_args *a, NBC_Scan_args *b, void *param) {
*/
int ompi_coll_libnbc_iexscan(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, p, res;
ptrdiff_t gap, span;
NBC_Schedule *schedule;

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

@ -12,6 +12,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -42,7 +46,7 @@ int NBC_Gather_args_compare(NBC_Gather_args *a, NBC_Gather_args *b, void *param)
int ompi_coll_libnbc_igather(const 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,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, p, res;
MPI_Aint rcvext = 0;
NBC_Schedule *schedule;
@ -177,7 +181,7 @@ int ompi_coll_libnbc_igather(const void* sendbuf, int sendcount, MPI_Datatype se
int ompi_coll_libnbc_igather_inter (const 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,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int res, rsize;
MPI_Aint rcvext = 0;
NBC_Schedule *schedule;

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

@ -13,6 +13,10 @@
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2015 Mellanox Technologies. All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -27,7 +31,7 @@
int ompi_coll_libnbc_igatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, p, res;
MPI_Aint rcvext = 0;
NBC_Schedule *schedule;
@ -112,7 +116,7 @@ int ompi_coll_libnbc_igatherv(const void* sendbuf, int sendcount, MPI_Datatype s
int ompi_coll_libnbc_igatherv_inter (const void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype,
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int res, rsize;
MPI_Aint rcvext;
NBC_Schedule *schedule;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -41,7 +45,7 @@ int NBC_Ineighbor_allgather_args_compare(NBC_Ineighbor_allgather_args *a, NBC_In
int ompi_coll_libnbc_ineighbor_allgather(const void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module) {
ompi_request_t ** request, struct mca_coll_base_module_2_2_0_t *module) {
int res, indegree, outdegree, *srcs, *dsts;
MPI_Aint rcvext;
NBC_Handle *handle;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -42,7 +46,7 @@ int NBC_Ineighbor_allgatherv_args_compare(NBC_Ineighbor_allgatherv_args *a, NBC_
int ompi_coll_libnbc_ineighbor_allgatherv(const void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
const int *rcounts, const int *displs, MPI_Datatype rtype,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int res, indegree, outdegree, *srcs, *dsts;
MPI_Aint rcvext;
NBC_Handle *handle;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -38,7 +42,7 @@ int NBC_Ineighbor_alltoall_args_compare(NBC_Ineighbor_alltoall_args *a, NBC_Inei
int ompi_coll_libnbc_ineighbor_alltoall(const void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module) {
ompi_request_t ** request, struct mca_coll_base_module_2_2_0_t *module) {
int res, indegree, outdegree, *srcs, *dsts;
MPI_Aint sndext, rcvext;
NBC_Handle *handle;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -42,7 +46,7 @@ int NBC_Ineighbor_alltoallv_args_compare(NBC_Ineighbor_alltoallv_args *a, NBC_In
int ompi_coll_libnbc_ineighbor_alltoallv(const void *sbuf, const int *scounts, const int *sdispls, MPI_Datatype stype,
void *rbuf, const int *rcounts, const int *rdispls, MPI_Datatype rtype,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int res, indegree, outdegree, *srcs, *dsts;
MPI_Aint sndext, rcvext;
NBC_Handle *handle;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -41,7 +45,7 @@ int NBC_Ineighbor_alltoallw_args_compare(NBC_Ineighbor_alltoallw_args *a, NBC_In
int ompi_coll_libnbc_ineighbor_alltoallw(const void *sbuf, const int *scounts, const MPI_Aint *sdisps, struct ompi_datatype_t * const *stypes,
void *rbuf, const int *rcounts, const MPI_Aint *rdisps, struct ompi_datatype_t * const *rtypes,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int res, indegree, outdegree, *srcs, *dsts;
NBC_Handle *handle;
ompi_coll_libnbc_module_t *libnbc_module = (ompi_coll_libnbc_module_t*) module;

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

@ -10,6 +10,9 @@
* Copyright (c) 2014-2017 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -51,7 +54,7 @@ int NBC_Reduce_args_compare(NBC_Reduce_args *a, NBC_Reduce_args *b, void *param)
/* the non-blocking reduce */
int ompi_coll_libnbc_ireduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, p, res, segsize;
size_t size;
MPI_Aint ext;
@ -211,7 +214,7 @@ int ompi_coll_libnbc_ireduce(const void* sendbuf, void* recvbuf, int count, MPI_
int ompi_coll_libnbc_ireduce_inter(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, res, rsize;
NBC_Schedule *schedule;
NBC_Handle *handle;

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

@ -12,6 +12,10 @@
* Copyright (c) 2015 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -39,7 +43,7 @@
int ompi_coll_libnbc_ireduce_scatter(const void* sendbuf, void* recvbuf, const int *recvcounts, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int peer, rank, maxr, p, res, count;
MPI_Aint ext;
ptrdiff_t gap, span, span_align;
@ -205,7 +209,7 @@ int ompi_coll_libnbc_ireduce_scatter(const void* sendbuf, void* recvbuf, const i
int ompi_coll_libnbc_ireduce_scatter_inter (const void* sendbuf, void* recvbuf, const int *recvcounts, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, res, count, lsize, rsize;
MPI_Aint ext;
ptrdiff_t gap, span, span_align;

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

@ -10,6 +10,10 @@
* reserved.
* Copyright (c) 2014-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -37,7 +41,7 @@
int ompi_coll_libnbc_ireduce_scatter_block(const void* sendbuf, void* recvbuf, int recvcount, MPI_Datatype datatype,
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int peer, rank, maxr, p, res, count;
MPI_Aint ext;
ptrdiff_t gap, span;
@ -207,7 +211,7 @@ int ompi_coll_libnbc_ireduce_scatter_block(const void* sendbuf, void* recvbuf, i
int ompi_coll_libnbc_ireduce_scatter_block_inter(const void *sendbuf, void *recvbuf, int rcount, struct ompi_datatype_t *dtype,
struct ompi_op_t *op, struct ompi_communicator_t *comm,
ompi_request_t **request, struct mca_coll_base_module_2_1_0_t *module) {
ompi_request_t **request, struct mca_coll_base_module_2_2_0_t *module) {
int rank, res, count, lsize, rsize;
MPI_Aint ext;
ptrdiff_t gap, span, span_align;

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

@ -9,6 +9,10 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -43,7 +47,7 @@ int NBC_Scan_args_compare(NBC_Scan_args *a, NBC_Scan_args *b, void *param) {
*/
int ompi_coll_libnbc_iscan(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, p, res;
ptrdiff_t gap, span;
NBC_Schedule *schedule;

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

@ -12,6 +12,10 @@
* reserved.
* Copyright (c) 2014-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -43,7 +47,7 @@ int NBC_Scatter_args_compare(NBC_Scatter_args *a, NBC_Scatter_args *b, void *par
int ompi_coll_libnbc_iscatter (const 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,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, p, res;
MPI_Aint sndext = 0;
NBC_Schedule *schedule;
@ -174,7 +178,7 @@ int ompi_coll_libnbc_iscatter (const void* sendbuf, int sendcount, MPI_Datatype
int ompi_coll_libnbc_iscatter_inter (const 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,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int res, rsize;
MPI_Aint sndext;
NBC_Schedule *schedule;

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

@ -12,6 +12,10 @@
* reserved.
* Copyright (c) 2014-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* Author(s): Torsten Hoefler <htor@cs.indiana.edu>
*
@ -26,7 +30,7 @@
int ompi_coll_libnbc_iscatterv(const void* sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int rank, p, res;
MPI_Aint sndext;
NBC_Schedule *schedule;
@ -109,7 +113,7 @@ int ompi_coll_libnbc_iscatterv(const void* sendbuf, const int *sendcounts, const
int ompi_coll_libnbc_iscatterv_inter (const void* sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
struct ompi_communicator_t *comm, ompi_request_t ** request,
struct mca_coll_base_module_2_1_0_t *module) {
struct mca_coll_base_module_2_2_0_t *module) {
int res, rsize;
MPI_Aint sndext;
NBC_Schedule *schedule;

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

@ -5,6 +5,7 @@
* Copyright (c) 2015 Bull SAS. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -205,18 +206,18 @@ int ompi_coll_portals4_ireduce_intra(const void* sendbuf, void* recvbuf, int cou
int root,
struct ompi_communicator_t *comm,
ompi_request_t ** ompi_request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_portals4_ireduce_intra_fini(struct ompi_coll_portals4_request_t *request);
int ompi_coll_portals4_allreduce_intra(const void* sendbuf, void* recvbuf, int count,
MPI_Datatype dtype, MPI_Op op,
struct ompi_communicator_t *comm,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int ompi_coll_portals4_iallreduce_intra(const void* sendbuf, void* recvbuf, int count,
MPI_Datatype dtype, MPI_Op op,
struct ompi_communicator_t *comm,
ompi_request_t ** ompi_request,
struct mca_coll_base_module_2_1_0_t *module);
struct mca_coll_base_module_2_2_0_t *module);
int
ompi_coll_portals4_iallreduce_intra_fini(struct ompi_coll_portals4_request_t *request);

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

@ -3,6 +3,7 @@
* Copyright (c) 2015 Bull SAS. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -359,7 +360,7 @@ allreduce_kary_tree_bottom(ompi_coll_portals4_request_t *request)
int ompi_coll_portals4_allreduce_intra(const void* sendbuf, void* recvbuf, int count,
MPI_Datatype dtype, MPI_Op op,
struct ompi_communicator_t *comm,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module;
ompi_coll_portals4_request_t *request;
@ -389,7 +390,7 @@ int ompi_coll_portals4_iallreduce_intra(const void* sendbuf, void* recvbuf, int
MPI_Datatype dtype, MPI_Op op,
struct ompi_communicator_t *comm,
ompi_request_t ** ompi_request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module;
ompi_coll_portals4_request_t *request;

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

@ -3,6 +3,7 @@
* Copyright (c) 2014 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Bull SAS. All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -268,7 +269,7 @@ ompi_coll_portals4_barrier_intra(struct ompi_communicator_t *comm,
int
ompi_coll_portals4_ibarrier_intra(struct ompi_communicator_t *comm,
ompi_request_t **ompi_req,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int ret;
mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module;

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

@ -3,6 +3,7 @@
* Copyright (c) 2015 Bull SAS. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -401,7 +402,7 @@ ompi_coll_portals4_ireduce_intra(const void* sendbuf, void* recvbuf, int count,
int root,
struct ompi_communicator_t *comm,
ompi_request_t ** ompi_request,
struct mca_coll_base_module_2_1_0_t *module)
struct mca_coll_base_module_2_2_0_t *module)
{
int ret;
mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module;

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

@ -9,6 +9,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -25,6 +26,7 @@
#include "ompi/communicator/communicator.h"
#include "ompi/mca/coll/coll.h"
#include "ompi/mca/coll/base/base.h"
#include "ompi/mca/coll/base/coll_base_functions.h"
#include "coll_self.h"
@ -79,6 +81,8 @@ mca_coll_self_comm_query(struct ompi_communicator_t *comm,
module->super.coll_scatter = mca_coll_self_scatter_intra;
module->super.coll_scatterv = mca_coll_self_scatterv_intra;
module->super.coll_reduce_local = mca_coll_base_reduce_local;
return &(module->super);
}

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

@ -15,6 +15,7 @@
* reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -45,13 +46,15 @@ static const char FUNC_NAME[] = "MPI_Reduce_local";
int MPI_Reduce_local(const void *inbuf, void *inoutbuf, int count,
MPI_Datatype datatype, MPI_Op op)
{
int err;
MEMCHECKER(
memchecker_datatype(datatype);
);
if (MPI_PARAM_CHECK) {
char *msg;
int err = MPI_SUCCESS;
err = MPI_SUCCESS;
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
if (MPI_OP_NULL == op || NULL == op) {
@ -75,9 +78,14 @@ int MPI_Reduce_local(const void *inbuf, void *inoutbuf, int count,
/* Invoke the op component to perform the back-end operation */
OBJ_RETAIN(op);
/* XXX -- CONST -- do not cast away const -- update mca/coll */
ompi_op_reduce(op,(void *) inbuf, inoutbuf, count, datatype);
OBJ_RETAIN(datatype);
// Since there is no 'comm' parameter to this interface use 'self' since
// this is a local operation to this process.
ompi_communicator_t *comm = &ompi_mpi_comm_self.comm;
err = comm->c_coll.coll_reduce_local(inbuf, inoutbuf, count, datatype, op,
comm->c_coll.coll_reduce_local_module);
OBJ_RELEASE(datatype);
OBJ_RELEASE(op);
return MPI_SUCCESS;
OMPI_ERRHANDLER_RETURN(err, MPI_COMM_WORLD, err, FUNC_NAME);
}