dadca7da88
This merge adds Checkpoint/Restart support to Open MPI. The initial frameworks and components support a LAM/MPI-like implementation. This commit follows the risk assessment presented to the Open MPI core development group on Feb. 22, 2007. This commit closes trac:158 More details to follow. This commit was SVN r14051. The following SVN revisions from the original message are invalid or inconsistent and therefore were not cross-referenced: r13912 The following Trac tickets were found above: Ticket 158 --> https://svn.open-mpi.org/trac/ompi/ticket/158
193 строки
7.1 KiB
C
193 строки
7.1 KiB
C
/*
|
|
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
|
* University Research and Technology
|
|
* Corporation. All rights reserved.
|
|
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
* of Tennessee Research Foundation. All rights
|
|
* reserved.
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
* University of Stuttgart. All rights reserved.
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
* All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#ifndef MCA_COLL_H
|
|
#define MCA_COLL_H
|
|
|
|
#include "ompi_config.h"
|
|
|
|
#include "mpi.h"
|
|
#include "opal/mca/mca.h"
|
|
#include "opal/mca/base/base.h"
|
|
|
|
#include "opal/mca/crs/crs.h"
|
|
#include "opal/mca/crs/base/base.h"
|
|
|
|
/*
|
|
* Forward declaration
|
|
*/
|
|
|
|
struct mca_coll_base_comm_t;
|
|
|
|
|
|
/*
|
|
* Coll component function typedefs
|
|
*/
|
|
|
|
typedef int (*mca_coll_base_component_init_query_fn_t)
|
|
(bool enable_progress_threads, bool enable_mpi_threads);
|
|
typedef const struct mca_coll_base_module_1_0_0_t *
|
|
(*mca_coll_base_component_comm_query_1_0_0_fn_t)
|
|
(struct ompi_communicator_t *comm, int *priority,
|
|
struct mca_coll_base_comm_t **data);
|
|
typedef int (*mca_coll_base_component_comm_unquery_fn_t)
|
|
(struct ompi_communicator_t *comm,
|
|
struct mca_coll_base_comm_t *data);
|
|
|
|
/*
|
|
* Coll module function typedefs
|
|
*/
|
|
|
|
typedef const struct mca_coll_base_module_1_0_0_t *
|
|
(*mca_coll_base_module_init_1_0_0_fn_t)(struct ompi_communicator_t *comm);
|
|
typedef int (*mca_coll_base_module_finalize_fn_t)
|
|
(struct ompi_communicator_t *comm);
|
|
|
|
|
|
typedef int (*mca_coll_base_module_allgather_fn_t)
|
|
(void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
|
void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
|
struct ompi_communicator_t *comm);
|
|
typedef int (*mca_coll_base_module_allgatherv_fn_t)
|
|
(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);
|
|
typedef int (*mca_coll_base_module_allreduce_fn_t)
|
|
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
|
|
struct ompi_op_t *op, struct ompi_communicator_t *comm);
|
|
typedef int (*mca_coll_base_module_alltoall_fn_t)
|
|
(void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
|
void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
|
struct ompi_communicator_t *comm);
|
|
typedef int (*mca_coll_base_module_alltoallv_fn_t)
|
|
(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);
|
|
typedef int (*mca_coll_base_module_alltoallw_fn_t)
|
|
(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);
|
|
typedef int (*mca_coll_base_module_barrier_fn_t)
|
|
(struct ompi_communicator_t *comm);
|
|
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);
|
|
typedef int (*mca_coll_base_module_exscan_fn_t)
|
|
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
|
|
struct ompi_op_t *op, struct ompi_communicator_t *comm);
|
|
typedef int (*mca_coll_base_module_gather_fn_t)
|
|
(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);
|
|
typedef int (*mca_coll_base_module_gatherv_fn_t)
|
|
(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);
|
|
typedef int (*mca_coll_base_module_reduce_fn_t)
|
|
(void *sbuf, void* rbuf, int count, struct ompi_datatype_t *dtype,
|
|
struct ompi_op_t *op, int root, struct ompi_communicator_t *comm);
|
|
typedef int (*mca_coll_base_module_reduce_scatter_fn_t)
|
|
(void *sbuf, void *rbuf, int *rcounts, struct ompi_datatype_t *dtype,
|
|
struct ompi_op_t *op, struct ompi_communicator_t *comm);
|
|
typedef int (*mca_coll_base_module_scan_fn_t)
|
|
(void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
|
|
struct ompi_op_t *op, struct ompi_communicator_t *comm);
|
|
typedef int (*mca_coll_base_module_scatter_fn_t)
|
|
(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);
|
|
typedef int (*mca_coll_base_module_scatterv_fn_t)
|
|
(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);
|
|
|
|
|
|
/**
|
|
* Fault Tolerance Awareness function
|
|
* @param status Checkpoint status
|
|
* @return OMPI_SUCCESS or failure status
|
|
*/
|
|
typedef int (*mca_coll_base_module_ft_event_fn_t) (int state);
|
|
|
|
|
|
/*
|
|
* Structure for coll v1.0.0 components
|
|
* Chained to MCA v1.0.0
|
|
*/
|
|
struct mca_coll_base_component_1_0_0_t {
|
|
mca_base_component_t collm_version;
|
|
mca_base_component_data_1_0_0_t collm_data;
|
|
|
|
/* Initialization / querying functions */
|
|
|
|
mca_coll_base_component_init_query_fn_t collm_init_query;
|
|
mca_coll_base_component_comm_query_1_0_0_fn_t collm_comm_query;
|
|
mca_coll_base_component_comm_unquery_fn_t collm_comm_unquery;
|
|
};
|
|
typedef struct mca_coll_base_component_1_0_0_t mca_coll_base_component_1_0_0_t;
|
|
|
|
|
|
/*
|
|
* This struct is hung on the communicator by the winning coll component
|
|
* after the negotiation. It has pointers for all the collective
|
|
* functions, as well as a "finalize" function for when the
|
|
* communicator is freed.
|
|
*/
|
|
|
|
struct mca_coll_base_module_1_0_0_t {
|
|
|
|
/* Per-communicator initialization and finalization functions */
|
|
|
|
mca_coll_base_module_init_1_0_0_fn_t coll_module_init;
|
|
mca_coll_base_module_finalize_fn_t coll_module_finalize;
|
|
|
|
/* Collective function pointers */
|
|
|
|
mca_coll_base_module_allgather_fn_t coll_allgather;
|
|
mca_coll_base_module_allgatherv_fn_t coll_allgatherv;
|
|
mca_coll_base_module_allreduce_fn_t coll_allreduce;
|
|
mca_coll_base_module_alltoall_fn_t coll_alltoall;
|
|
mca_coll_base_module_alltoallv_fn_t coll_alltoallv;
|
|
mca_coll_base_module_alltoallw_fn_t coll_alltoallw;
|
|
mca_coll_base_module_barrier_fn_t coll_barrier;
|
|
mca_coll_base_module_bcast_fn_t coll_bcast;
|
|
mca_coll_base_module_exscan_fn_t coll_exscan;
|
|
mca_coll_base_module_gather_fn_t coll_gather;
|
|
mca_coll_base_module_gatherv_fn_t coll_gatherv;
|
|
mca_coll_base_module_reduce_fn_t coll_reduce;
|
|
mca_coll_base_module_reduce_scatter_fn_t coll_reduce_scatter;
|
|
mca_coll_base_module_scan_fn_t coll_scan;
|
|
mca_coll_base_module_scatter_fn_t coll_scatter;
|
|
mca_coll_base_module_scatterv_fn_t coll_scatterv;
|
|
|
|
mca_coll_base_module_ft_event_fn_t ft_event;
|
|
};
|
|
typedef struct mca_coll_base_module_1_0_0_t mca_coll_base_module_1_0_0_t;
|
|
|
|
|
|
/*
|
|
* Macro for use in components that are of type coll v1.0.0
|
|
*/
|
|
#define MCA_COLL_BASE_VERSION_1_0_0 \
|
|
/* coll v1.0 is chained to MCA v1.0 */ \
|
|
MCA_BASE_VERSION_1_0_0, \
|
|
/* coll v1.0 */ \
|
|
"coll", 1, 0, 0
|
|
|
|
#endif /* MCA_COLL_H */
|