2004-12-27 08:56:33 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2004-2005 The Trustees of Indiana University.
|
|
|
|
* All rights reserved.
|
|
|
|
* Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
|
|
|
|
* All rights reserved.
|
|
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
|
|
* University of Stuttgart. All rights reserved.
|
|
|
|
* $COPYRIGHT$
|
|
|
|
*
|
|
|
|
* Additional copyrights may follow
|
|
|
|
*
|
|
|
|
* $HEADER$
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef MCA_COLL_HIERARCH_EXPORT_H
|
|
|
|
#define MCA_COLL_HIERARCH_EXPORT_H
|
|
|
|
|
|
|
|
#include "ompi_config.h"
|
|
|
|
|
|
|
|
#include "mpi.h"
|
|
|
|
#include "mca/mca.h"
|
|
|
|
#include "mca/coll/coll.h"
|
|
|
|
#include "request/request.h"
|
|
|
|
#include "mca/pml/pml.h"
|
|
|
|
|
|
|
|
#if defined(c_plusplus) || defined(__cplusplus)
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Globally exported variable
|
|
|
|
*/
|
|
|
|
|
|
|
|
extern const mca_coll_base_component_1_0_0_t mca_coll_hierarch_component;
|
|
|
|
extern int mca_coll_hierarch_priority_param;
|
|
|
|
extern int mca_coll_hierarch_verbose_param;
|
|
|
|
extern int mca_coll_hierarch_verbose;
|
|
|
|
|
2005-02-24 15:11:07 +00:00
|
|
|
/*
|
|
|
|
* Data structure for attaching data to the communicator
|
|
|
|
*/
|
|
|
|
struct mca_coll_base_comm_t {
|
|
|
|
struct ompi_communicator_t *hier_llcomm; /* low level communicator */
|
|
|
|
int hier_num_lleaders; /* number of local leaders */
|
|
|
|
int *hier_lleaders; /* list of local leaders */
|
|
|
|
int hier_my_lleader; /* pos. of my lleader in hier_lleaders */
|
|
|
|
int hier_num_reqs; /* num. of requests */
|
|
|
|
ompi_request_t **hier_reqs; /* list of requests */
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2004-12-27 08:56:33 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* coll API functions
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/* API functions */
|
|
|
|
|
|
|
|
int mca_coll_hierarch_init_query(bool *allow_hierarch_user_threads,
|
|
|
|
bool *have_hidden_threads);
|
|
|
|
const struct mca_coll_base_module_1_0_0_t *
|
|
|
|
mca_coll_hierarch_comm_query(struct ompi_communicator_t *comm,
|
2005-02-24 15:11:07 +00:00
|
|
|
int *priority, struct mca_coll_base_comm_t **data);
|
|
|
|
int mca_coll_hierarch_comm_unquery(struct ompi_communicator_t *comm,
|
|
|
|
struct mca_coll_base_comm_t *data);
|
2004-12-27 08:56:33 +00:00
|
|
|
|
|
|
|
const struct mca_coll_base_module_1_0_0_t *
|
|
|
|
mca_coll_hierarch_module_init(struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_module_finalize(struct ompi_communicator_t *comm);
|
|
|
|
|
|
|
|
int mca_coll_hierarch_allgather_intra(void *sbuf, int scount,
|
|
|
|
struct ompi_datatype_t *sdtype,
|
|
|
|
void *rbuf, int rcount,
|
|
|
|
struct ompi_datatype_t *rdtype,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_allgatherv_intra(void *sbuf, int scount,
|
|
|
|
struct ompi_datatype_t *sdtype,
|
|
|
|
void * rbuf, int *rcounts,
|
|
|
|
int *disps,
|
|
|
|
struct ompi_datatype_t *rdtype,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_allreduce_intra(void *sbuf, void *rbuf, int count,
|
|
|
|
struct ompi_datatype_t *dtype,
|
|
|
|
struct ompi_op_t *op,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_alltoall_intra(void *sbuf, int scount,
|
|
|
|
struct ompi_datatype_t *sdtype,
|
|
|
|
void* rbuf, int rcount,
|
|
|
|
struct ompi_datatype_t *rdtype,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_alltoallv_intra(void *sbuf, int *scounts,
|
|
|
|
int *sdisps,
|
|
|
|
struct ompi_datatype_t *sdtype,
|
|
|
|
void *rbuf, int *rcounts,
|
|
|
|
int *rdisps,
|
|
|
|
struct ompi_datatype_t *rdtype,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_alltoallw_intra(void *sbuf, int *scounts,
|
|
|
|
int *sdisps,
|
|
|
|
struct ompi_datatype_t **sdtypes,
|
|
|
|
void *rbuf, int *rcounts,
|
|
|
|
int *rdisps,
|
|
|
|
struct ompi_datatype_t **rdtypes,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_barrier_intra(struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_bcast_intra(void *buff, int count,
|
|
|
|
struct ompi_datatype_t *datatype,
|
|
|
|
int root,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_exscan_intra(void *sbuf, void *rbuf, int count,
|
|
|
|
struct ompi_datatype_t *dtype,
|
|
|
|
struct ompi_op_t *op,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_gather_intra(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);
|
|
|
|
int mca_coll_hierarch_gatherv_intra(void *sbuf, int scount,
|
|
|
|
struct ompi_datatype_t *sdtype,
|
|
|
|
void *rbuf, int *rcounts, int *disps,
|
|
|
|
struct ompi_datatype_t *rdtype,
|
|
|
|
int root,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_reduce_intra(void *sbuf, void* rbuf, int count,
|
|
|
|
struct ompi_datatype_t *dtype,
|
|
|
|
struct ompi_op_t *op,
|
|
|
|
int root,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_reduce_scatter_intra(void *sbuf, void *rbuf,
|
|
|
|
int *rcounts,
|
|
|
|
struct ompi_datatype_t *dtype,
|
|
|
|
struct ompi_op_t *op,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_scan_intra(void *sbuf, void *rbuf, int count,
|
|
|
|
struct ompi_datatype_t *dtype,
|
|
|
|
struct ompi_op_t *op,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
int mca_coll_hierarch_scatter_intra(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);
|
|
|
|
int mca_coll_hierarch_scatterv_intra(void *sbuf, int *scounts, int *disps,
|
|
|
|
struct ompi_datatype_t *sdtype,
|
|
|
|
void* rbuf, int rcount,
|
|
|
|
struct ompi_datatype_t *rdtype, int root,
|
|
|
|
struct ompi_communicator_t *comm);
|
|
|
|
|
|
|
|
#if defined(c_plusplus) || defined(__cplusplus)
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* MCA_COLL_HIERARCH_EXPORT_H */
|