2013-09-27 01:55:08 +04:00
|
|
|
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
2012-06-26 02:38:06 +04:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
|
|
|
* University Research and Technology
|
|
|
|
* Corporation. All rights reserved.
|
2013-07-04 12:34:37 +04:00
|
|
|
* Copyright (c) 2004-2013 The University of Tennessee and The University
|
2012-06-26 02:38:06 +04:00
|
|
|
* of Tennessee Research Foundation. All rights
|
|
|
|
* reserved.
|
2015-06-24 06:59:57 +03:00
|
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
2012-06-26 02:38:06 +04:00
|
|
|
* University of Stuttgart. All rights reserved.
|
|
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
|
|
* All rights reserved.
|
|
|
|
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
|
2015-02-19 23:41:41 +03:00
|
|
|
* Copyright (c) 2013-2015 Los Alamos National Security, LLC. All rights
|
2013-09-27 01:55:08 +04:00
|
|
|
* reserved.
|
2015-08-28 10:43:13 +03:00
|
|
|
* Copyright (c) 2014-2015 Research Organization for Information Science
|
2014-10-10 10:19:37 +04:00
|
|
|
* and Technology (RIST). All rights reserved.
|
2012-06-26 02:38:06 +04:00
|
|
|
* $COPYRIGHT$
|
2015-06-24 06:59:57 +03:00
|
|
|
*
|
2012-06-26 02:38:06 +04:00
|
|
|
* Additional copyrights may follow
|
2015-06-24 06:59:57 +03:00
|
|
|
*
|
2012-06-26 02:38:06 +04:00
|
|
|
* $HEADER$
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef MCA_COLL_LIBNBC_EXPORT_H
|
|
|
|
#define MCA_COLL_LIBNBC_EXPORT_H
|
|
|
|
|
|
|
|
#include "ompi/mca/coll/coll.h"
|
|
|
|
#include "ompi/request/request.h"
|
2012-07-06 17:59:03 +04:00
|
|
|
#include "opal/sys/atomic.h"
|
2012-06-26 02:38:06 +04:00
|
|
|
|
|
|
|
BEGIN_C_DECLS
|
|
|
|
|
2012-06-28 02:08:19 +04:00
|
|
|
/*********************** LibNBC tuning parameters ************************/
|
|
|
|
|
|
|
|
/* the debug level */
|
|
|
|
#define NBC_DLEVEL 0
|
|
|
|
|
|
|
|
/* enable schedule caching - undef NBC_CACHE_SCHEDULE to deactivate it */
|
|
|
|
/* TODO: this whole schedule cache stuff does not work with the tmbuf
|
|
|
|
* :-( - first, the tmpbuf must not be freed if a schedule using it is
|
|
|
|
* still in the cache and second, the tmpbuf used by the schedule must
|
2015-06-24 06:59:57 +03:00
|
|
|
* be attached to the handle that uses this schedule !!!!
|
2012-06-28 02:08:19 +04:00
|
|
|
* I.E., THIS IS EXPERIMENTAL AND MIGHT NOT WORK */
|
2013-01-22 02:45:59 +04:00
|
|
|
/* It also leaks memory because the schedule is never cleaned up when
|
|
|
|
the communicator is destroyed, so don't use it for now */
|
|
|
|
#ifdef NBC_CACHE_SCHEDULE
|
|
|
|
#undef NBC_CACHE_SCHEDULE
|
|
|
|
#endif
|
2012-06-28 02:08:19 +04:00
|
|
|
#define NBC_SCHED_DICT_UPPER 1024 /* max. number of dict entries */
|
|
|
|
#define NBC_SCHED_DICT_LOWER 512 /* nuber of dict entries after wipe, if SCHED_DICT_UPPER is reached */
|
|
|
|
|
|
|
|
/********************* end of LibNBC tuning parameters ************************/
|
|
|
|
|
2012-06-26 02:38:06 +04:00
|
|
|
/* Function return codes */
|
|
|
|
#define NBC_OK 0 /* everything went fine */
|
|
|
|
#define NBC_SUCCESS 0 /* everything went fine (MPI compliant :) */
|
|
|
|
#define NBC_OOR 1 /* out of resources */
|
|
|
|
#define NBC_BAD_SCHED 2 /* bad schedule */
|
|
|
|
#define NBC_CONTINUE 3 /* progress not done */
|
|
|
|
#define NBC_DATATYPE_NOT_SUPPORTED 4 /* datatype not supported or not valid */
|
|
|
|
#define NBC_OP_NOT_SUPPORTED 5 /* operation not supported or not valid */
|
|
|
|
#define NBC_NOT_IMPLEMENTED 6
|
|
|
|
#define NBC_INVALID_PARAM 7 /* invalid parameters */
|
|
|
|
#define NBC_INVALID_TOPOLOGY_COMM 8 /* invalid topology attached to communicator */
|
|
|
|
|
|
|
|
/* number of implemented collective functions */
|
2012-06-28 20:52:03 +04:00
|
|
|
#define NBC_NUM_COLL 17
|
2012-06-26 02:38:06 +04:00
|
|
|
|
2012-06-27 19:58:17 +04:00
|
|
|
struct ompi_coll_libnbc_component_t {
|
|
|
|
mca_coll_base_component_2_0_0_t super;
|
2015-02-19 23:41:41 +03:00
|
|
|
opal_free_list_t requests;
|
2012-06-27 19:58:17 +04:00
|
|
|
opal_list_t active_requests;
|
2012-10-29 23:52:43 +04:00
|
|
|
int32_t active_comms;
|
2012-07-06 17:59:03 +04:00
|
|
|
opal_atomic_lock_t progress_lock;
|
2012-06-27 19:58:17 +04:00
|
|
|
};
|
|
|
|
typedef struct ompi_coll_libnbc_component_t ompi_coll_libnbc_component_t;
|
2012-06-26 02:38:06 +04:00
|
|
|
|
2012-06-27 19:58:17 +04:00
|
|
|
/* Globally exported variables */
|
|
|
|
OMPI_MODULE_DECLSPEC extern ompi_coll_libnbc_component_t mca_coll_libnbc_component;
|
|
|
|
|
|
|
|
struct ompi_coll_libnbc_module_t {
|
|
|
|
mca_coll_base_module_t super;
|
2012-10-26 19:36:09 +04:00
|
|
|
opal_mutex_t mutex;
|
|
|
|
bool comm_registered;
|
2012-06-27 19:58:17 +04:00
|
|
|
int tag;
|
2012-06-26 02:38:06 +04:00
|
|
|
#ifdef NBC_CACHE_SCHEDULE
|
|
|
|
void *NBC_Dict[NBC_NUM_COLL]; /* this should point to a struct
|
|
|
|
hb_tree, but since this is a
|
|
|
|
public header-file, this would be
|
|
|
|
an include mess :-(. So let's void
|
|
|
|
it ...*/
|
|
|
|
int NBC_Dict_size[NBC_NUM_COLL];
|
|
|
|
#endif
|
2012-06-27 19:58:17 +04:00
|
|
|
};
|
|
|
|
typedef struct ompi_coll_libnbc_module_t ompi_coll_libnbc_module_t;
|
|
|
|
OBJ_CLASS_DECLARATION(ompi_coll_libnbc_module_t);
|
|
|
|
|
|
|
|
typedef ompi_coll_libnbc_module_t NBC_Comminfo;
|
|
|
|
|
2015-07-09 01:51:29 +03:00
|
|
|
struct NBC_Schedule {
|
|
|
|
opal_object_t super;
|
|
|
|
volatile int size;
|
|
|
|
volatile int current_round_offset;
|
|
|
|
char *data;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct NBC_Schedule NBC_Schedule;
|
|
|
|
|
|
|
|
OBJ_CLASS_DECLARATION(NBC_Schedule);
|
2012-06-26 02:38:06 +04:00
|
|
|
|
|
|
|
struct ompi_coll_libnbc_request_t {
|
|
|
|
ompi_request_t super;
|
|
|
|
MPI_Comm comm;
|
|
|
|
long row_offset;
|
|
|
|
int tag;
|
|
|
|
volatile int req_count;
|
2012-07-06 17:59:03 +04:00
|
|
|
ompi_request_t **req_array;
|
2012-06-26 02:38:06 +04:00
|
|
|
NBC_Comminfo *comminfo;
|
2015-07-09 01:51:29 +03:00
|
|
|
NBC_Schedule *schedule;
|
2012-06-26 02:38:06 +04:00
|
|
|
void *tmpbuf; /* temporary buffer e.g. used for Reduce */
|
|
|
|
/* TODO: we should make a handle pointer to a state later (that the user
|
|
|
|
* can move request handles) */
|
|
|
|
};
|
|
|
|
typedef struct ompi_coll_libnbc_request_t ompi_coll_libnbc_request_t;
|
|
|
|
OBJ_CLASS_DECLARATION(ompi_coll_libnbc_request_t);
|
|
|
|
|
|
|
|
typedef ompi_coll_libnbc_request_t NBC_Handle;
|
|
|
|
|
2012-06-27 19:58:17 +04:00
|
|
|
|
2013-07-04 12:34:37 +04:00
|
|
|
#define OMPI_COLL_LIBNBC_REQUEST_ALLOC(comm, req) \
|
2012-06-27 19:58:17 +04:00
|
|
|
do { \
|
2015-02-19 23:41:41 +03:00
|
|
|
opal_free_list_item_t *item; \
|
|
|
|
item = opal_free_list_wait (&mca_coll_libnbc_component.requests); \
|
2012-06-27 19:58:17 +04:00
|
|
|
req = (ompi_coll_libnbc_request_t*) item; \
|
|
|
|
OMPI_REQUEST_INIT(&req->super, false); \
|
|
|
|
req->super.req_mpi_object.comm = comm; \
|
|
|
|
req->super.req_complete = false; \
|
|
|
|
req->super.req_state = OMPI_REQUEST_ACTIVE; \
|
|
|
|
} while (0)
|
|
|
|
|
|
|
|
#define OMPI_COLL_LIBNBC_REQUEST_RETURN(req) \
|
|
|
|
do { \
|
2015-07-09 01:51:29 +03:00
|
|
|
OMPI_REQUEST_FINI(&(req)->super); \
|
2015-02-19 23:41:41 +03:00
|
|
|
opal_free_list_return (&mca_coll_libnbc_component.requests, \
|
2015-07-09 01:51:29 +03:00
|
|
|
(opal_free_list_item_t*) (req)); \
|
2012-06-27 19:58:17 +04:00
|
|
|
} while (0)
|
|
|
|
|
2012-10-26 19:36:09 +04:00
|
|
|
int ompi_coll_libnbc_progress(void);
|
|
|
|
|
2012-06-27 19:58:17 +04:00
|
|
|
int NBC_Init_comm(MPI_Comm comm, ompi_coll_libnbc_module_t *module);
|
|
|
|
int NBC_Progress(NBC_Handle *handle);
|
2012-07-02 19:47:22 +04:00
|
|
|
|
2012-06-28 02:08:19 +04:00
|
|
|
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iallgather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iallgatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *displs,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iallreduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
|
2012-06-28 02:08:19 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ialltoall(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
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,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
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,
|
2015-06-24 06:59:57 +03:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t **request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2012-06-27 19:58:17 +04:00
|
|
|
int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2012-06-28 02:08:19 +04:00
|
|
|
int ompi_coll_libnbc_ibcast(void *buffer, int count, MPI_Datatype datatype, int root,
|
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iexscan(const void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
|
2012-06-28 02:08:19 +04:00
|
|
|
struct ompi_op_t *op, struct ompi_communicator_t *comm, ompi_request_t **request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_igather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_igatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype,
|
|
|
|
void* recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype,
|
2012-06-28 02:08:19 +04:00
|
|
|
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ireduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ireduce_scatter(const void* sendbuf, void* recvbuf, const int *recvcounts, MPI_Datatype datatype,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ireduce_scatter_block(const void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype,
|
2015-06-24 06:59:57 +03:00
|
|
|
struct ompi_op_t *op, struct ompi_communicator_t *comm,
|
2012-06-28 02:08:19 +04:00
|
|
|
ompi_request_t **request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iscan(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
|
2012-06-28 02:08:19 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iscatter(const void* sendbuf, int sendcount, MPI_Datatype sendtype,
|
2015-06-24 06:59:57 +03:00
|
|
|
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
|
2012-06-28 02:08:19 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iscatterv(const void* sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype,
|
2015-06-24 06:59:57 +03:00
|
|
|
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
|
2012-06-28 02:08:19 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2012-06-28 02:08:19 +04:00
|
|
|
|
|
|
|
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iallgather_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iallgatherv_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int *recvcounts, const int *displs,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iallreduce_inter(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op,
|
2012-06-28 02:08:19 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ialltoall_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
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,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
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,
|
2015-06-24 06:59:57 +03:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t **request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2012-06-28 02:08:19 +04:00
|
|
|
int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2012-06-28 02:08:19 +04:00
|
|
|
int ompi_coll_libnbc_ibcast_inter(void *buffer, int count, MPI_Datatype datatype, int root,
|
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_igather_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Datatype recvtype, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
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,
|
2012-06-28 02:08:19 +04:00
|
|
|
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ireduce_inter(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Op op, int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ireduce_scatter_inter(const void* sendbuf, void* recvbuf, const int *recvcounts, MPI_Datatype datatype,
|
2012-06-28 02:08:19 +04:00
|
|
|
MPI_Op op, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ireduce_scatter_block_inter(const void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype,
|
2015-06-24 06:59:57 +03:00
|
|
|
struct ompi_op_t *op, struct ompi_communicator_t *comm,
|
2012-06-28 02:08:19 +04:00
|
|
|
ompi_request_t **request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iscatter_inter(const void* sendbuf, int sendcount, MPI_Datatype sendtype,
|
2015-06-24 06:59:57 +03:00
|
|
|
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
|
2012-06-28 02:08:19 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_iscatterv_inter(const void* sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype,
|
2015-06-24 06:59:57 +03:00
|
|
|
void* recvbuf, int recvcount, MPI_Datatype recvtype, int root,
|
2012-06-28 02:08:19 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2012-06-27 19:58:17 +04:00
|
|
|
|
2013-09-27 01:55:08 +04:00
|
|
|
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ineighbor_allgather(const void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
|
2013-09-27 01:55:08 +04:00
|
|
|
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
|
2014-10-10 10:19:37 +04:00
|
|
|
ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
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,
|
2013-09-27 01:55:08 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
int ompi_coll_libnbc_ineighbor_alltoall(const void *sbuf, int scount, MPI_Datatype stype, void *rbuf,
|
2013-09-27 01:55:08 +04:00
|
|
|
int rcount, MPI_Datatype rtype, struct ompi_communicator_t *comm,
|
2014-10-10 10:19:37 +04:00
|
|
|
ompi_request_t ** request, struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
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,
|
2013-09-27 01:55:08 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2015-08-28 10:43:13 +03:00
|
|
|
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,
|
2013-09-27 01:55:08 +04:00
|
|
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
2014-10-10 10:19:37 +04:00
|
|
|
struct mca_coll_base_module_2_1_0_t *module);
|
2013-09-27 01:55:08 +04:00
|
|
|
|
|
|
|
|
2012-06-26 02:38:06 +04:00
|
|
|
END_C_DECLS
|
|
|
|
|
|
|
|
#endif /* MCA_COLL_LIBNBC_EXPORT_H */
|