30e1e49a9e
This is preparation for moving verbs dependent code out from memheap/base component Refs: #3763 This commit was SVN r30454.
139 строки
4.3 KiB
C
139 строки
4.3 KiB
C
/**
|
|
* Copyright (c) 2013 Mellanox Technologies, Inc.
|
|
* All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
* */
|
|
|
|
#ifndef MCA_SCOLL_FCA_H
|
|
#define MCA_SCOLL_FCA_H
|
|
#include "oshmem_config.h"
|
|
#include "oshmem/constants.h"
|
|
#include "shmem.h"
|
|
#include "opal/mca/mca.h"
|
|
#include "oshmem/mca/scoll/scoll.h"
|
|
#include "oshmem/util/oshmem_util.h"
|
|
#include "scoll_fca_api.h"
|
|
#include "scoll_fca_debug.h"
|
|
|
|
#ifdef OMPI_PROC_FLAG_LOCAL
|
|
#define FCA_IS_LOCAL_PROCESS(n) ((n) & OMPI_PROC_FLAG_LOCAL)
|
|
#else
|
|
#define FCA_IS_LOCAL_PROCESS(n) OPAL_PROC_ON_LOCAL_NODE(n)
|
|
#endif
|
|
|
|
BEGIN_C_DECLS
|
|
struct mca_scoll_fca_component_t {
|
|
/** Base coll component */
|
|
mca_scoll_base_component_1_0_0_t super;
|
|
|
|
/** MCA parameter: Priority of this component */
|
|
int fca_priority;
|
|
|
|
/** MCA parameter: Verbose level of this component */
|
|
int fca_verbose;
|
|
|
|
/** MCA parameter: Path to fca spec file */
|
|
char* fca_spec_file;
|
|
|
|
/** MCA parameter: FCA device */
|
|
char* fca_dev;
|
|
|
|
/** MCA parameter: Enable FCA */
|
|
int fca_enable;
|
|
|
|
/** MCA parameter: Enable FCA Barrier */
|
|
int fca_enable_barrier;
|
|
|
|
/** MCA parameter: Enable FCA Bcast */
|
|
int fca_enable_bcast;
|
|
|
|
/** MCA parameter: Enable FCA Allreduce */
|
|
int fca_enable_allreduce;
|
|
|
|
/** MCA parameter: Enable FCA Allgather */
|
|
int fca_enable_allgather;
|
|
|
|
/** MCA parameter: Enable FCA Allgatherv */
|
|
int fca_enable_allgatherv;
|
|
|
|
/** MCA parameter: FCA NP */
|
|
int fca_np;
|
|
|
|
/* FCA global stuff */
|
|
fca_t *fca_context; /* FCA context handle */
|
|
|
|
/*These vars are used as symmetric objects during __fca_comm_new. The proper amount of memory
|
|
is allocated only once during fca_comm_query*/
|
|
int *ret;
|
|
int *rcounts;
|
|
void *my_info_exchangeable;
|
|
void *fca_comm_desc_exchangeable;
|
|
};
|
|
typedef struct mca_scoll_fca_component_t mca_scoll_fca_component_t;
|
|
|
|
OSHMEM_MODULE_DECLSPEC extern mca_scoll_fca_component_t mca_scoll_fca_component;
|
|
|
|
struct mca_scoll_fca_module_t {
|
|
mca_scoll_base_module_t super;
|
|
struct oshmem_group_t *comm;
|
|
int rank;
|
|
int local_proc_idx;
|
|
int num_local_procs;
|
|
int *local_ranks;
|
|
fca_comm_t *fca_comm;
|
|
fca_comm_desc_t fca_comm_desc;
|
|
fca_comm_caps_t fca_comm_caps;
|
|
|
|
/* Saved handlers - for fallback */
|
|
mca_scoll_base_module_barrier_fn_t previous_barrier;
|
|
mca_scoll_base_module_t *previous_barrier_module;
|
|
mca_scoll_base_module_broadcast_fn_t previous_broadcast;
|
|
mca_scoll_base_module_t *previous_broadcast_module;
|
|
mca_scoll_base_module_collect_fn_t previous_collect;
|
|
mca_scoll_base_module_t *previous_collect_module;
|
|
mca_scoll_base_module_reduce_fn_t previous_reduce;
|
|
mca_scoll_base_module_t *previous_reduce_module;
|
|
};
|
|
typedef struct mca_scoll_fca_module_t mca_scoll_fca_module_t;
|
|
OBJ_CLASS_DECLARATION(mca_scoll_fca_module_t);
|
|
|
|
/* API functions */
|
|
int mca_scoll_fca_init_query(bool enable_progress_threads,
|
|
bool enable_mpi_threads);
|
|
mca_scoll_base_module_t *mca_scoll_fca_comm_query(struct oshmem_group_t *comm,
|
|
int *priority);
|
|
int mca_scoll_fca_get_fca_lib(struct oshmem_group_t *comm);
|
|
|
|
int mca_scoll_fca_barrier(struct oshmem_group_t *group,
|
|
long *pSync,
|
|
int algorithm_type);
|
|
int mca_scoll_fca_broadcast(struct oshmem_group_t *group,
|
|
int PE_root,
|
|
void *target,
|
|
const void *source,
|
|
size_t nlong,
|
|
long *pSync,
|
|
int algorithm_type);
|
|
int mca_scoll_fca_collect(struct oshmem_group_t *group,
|
|
void *target,
|
|
const void *source,
|
|
size_t nlong,
|
|
long *pSync,
|
|
bool nlong_type,
|
|
int algorithm_type);
|
|
int mca_scoll_fca_reduce(struct oshmem_group_t *group,
|
|
struct oshmem_op_t *op,
|
|
void *target,
|
|
const void *source,
|
|
size_t nlong,
|
|
long *pSync,
|
|
void *pWrk,
|
|
int algorithm_type);
|
|
OBJ_CLASS_DECLARATION(mca_coll_fca_module_t);
|
|
END_C_DECLS
|
|
#endif
|