adding the basic framework for the hierarchical collective module.
This commit was SVN r3880.
Этот коммит содержится в:
родитель
6342e5f139
Коммит
f5abd20a57
0
src/mca/coll/hierarch/.ompi_ignore
Обычный файл
0
src/mca/coll/hierarch/.ompi_ignore
Обычный файл
57
src/mca/coll/hierarch/Makefile.am
Обычный файл
57
src/mca/coll/hierarch/Makefile.am
Обычный файл
@ -0,0 +1,57 @@
|
|||||||
|
#
|
||||||
|
# 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$
|
||||||
|
#
|
||||||
|
|
||||||
|
# Need to use our own AUTOMAKE_OPTIONS -- cannot include
|
||||||
|
# Makefile.options from main ompi tree because Automake now defers
|
||||||
|
# "include" statements until "make" time. Hence, if we're building
|
||||||
|
# this component outside the ompi tree, the include statement will
|
||||||
|
# fail.
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = foreign dist-bzip2
|
||||||
|
|
||||||
|
|
||||||
|
EXTRA_DIST = VERSION
|
||||||
|
|
||||||
|
# Make the output library in this directory, and name it either
|
||||||
|
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
|
||||||
|
# (for static builds).
|
||||||
|
|
||||||
|
if OMPI_BUILD_coll_hierarch_DSO
|
||||||
|
component_noinst =
|
||||||
|
component_install = mca_coll_hierarch.la
|
||||||
|
else
|
||||||
|
component_noinst = libmca_coll_hierarch.la
|
||||||
|
component_install =
|
||||||
|
endif
|
||||||
|
|
||||||
|
mcacomponentdir = $(libdir)/openmpi
|
||||||
|
mcacomponent_LTLIBRARIES = $(component_install)
|
||||||
|
mca_coll_hierarch_la_SOURCES = $(sources)
|
||||||
|
mca_coll_hierarch_la_LIBADD = $(LIBMPI_LA)
|
||||||
|
mca_coll_hierarch_la_LDFLAGS = -module -avoid-version
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES = $(component_noinst)
|
||||||
|
libmca_coll_hierarch_la_SOURCES = $(sources)
|
||||||
|
libmca_coll_hierarch_la_LIBADD = src/libmca_coll_hierarch.la
|
||||||
|
libmca_coll_hierarch_la_LDFLAGS = -module -avoid-version
|
||||||
|
|
||||||
|
# Source files
|
||||||
|
|
||||||
|
sources = \
|
||||||
|
coll_hierarch.h \
|
||||||
|
coll_hierarch.c \
|
||||||
|
coll_hierarch_barrier.c \
|
||||||
|
coll_hierarch_bcast.c \
|
||||||
|
coll_hierarch_component.c \
|
||||||
|
coll_hierarch_reduce.c
|
6
src/mca/coll/hierarch/VERSION
Обычный файл
6
src/mca/coll/hierarch/VERSION
Обычный файл
@ -0,0 +1,6 @@
|
|||||||
|
major=10
|
||||||
|
minor=0
|
||||||
|
release=0
|
||||||
|
alpha=0
|
||||||
|
beta=0
|
||||||
|
svn=1
|
145
src/mca/coll/hierarch/coll_hierarch.c
Обычный файл
145
src/mca/coll/hierarch/coll_hierarch.c
Обычный файл
@ -0,0 +1,145 @@
|
|||||||
|
/*
|
||||||
|
* 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$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ompi_config.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "mpi.h"
|
||||||
|
#include "communicator/communicator.h"
|
||||||
|
#include "mca/coll/coll.h"
|
||||||
|
#include "mca/coll/base/base.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Linear set of collective algorithms
|
||||||
|
*/
|
||||||
|
static const mca_coll_base_module_1_0_0_t intra = {
|
||||||
|
|
||||||
|
/* Initialization / finalization functions */
|
||||||
|
|
||||||
|
mca_coll_hierarch_module_init,
|
||||||
|
mca_coll_hierarch_module_finalize,
|
||||||
|
|
||||||
|
/* Collective function pointers */
|
||||||
|
/* function pointers marked with NULL are not yet implemented
|
||||||
|
and will use the functions provided in the basic module */
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
mca_coll_hierarch_barrier_intra,
|
||||||
|
mca_coll_hierarch_bcast_intra,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
mca_coll_hierarch_reduce_intra,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Linear set of collective algorithms for intercommunicators
|
||||||
|
*/
|
||||||
|
static const mca_coll_base_module_1_0_0_t inter = {
|
||||||
|
|
||||||
|
/* Initialization / finalization functions */
|
||||||
|
|
||||||
|
mca_coll_hierarch_module_init,
|
||||||
|
mca_coll_hierarch_module_finalize,
|
||||||
|
|
||||||
|
/* Collective function pointers */
|
||||||
|
/* No inter-communicator functions are provided at the moment */
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initial query function that is invoked during MPI_INIT, allowing
|
||||||
|
* this module to indicate what level of thread support it provides.
|
||||||
|
*/
|
||||||
|
int mca_coll_hierarch_init_query(bool *allow_hierarch_user_threads,
|
||||||
|
bool *have_hidden_user_threads)
|
||||||
|
{
|
||||||
|
*allow_hierarch_user_threads = true;
|
||||||
|
*have_hidden_user_threads = false;
|
||||||
|
|
||||||
|
/* All done */
|
||||||
|
|
||||||
|
return OMPI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Invoked when there's a new communicator that has been created.
|
||||||
|
* Look at the communicator and decide which set of functions and
|
||||||
|
* priority we want to return.
|
||||||
|
*/
|
||||||
|
const mca_coll_base_module_1_0_0_t *
|
||||||
|
mca_coll_hierarch_comm_query(struct ompi_communicator_t *comm, int *priority)
|
||||||
|
{
|
||||||
|
if (OMPI_SUCCESS != mca_base_param_lookup_int(mca_coll_hierarch_priority_param,
|
||||||
|
priority)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OMPI_COMM_IS_INTER(comm) ? &inter : &intra;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Init module on the communicator
|
||||||
|
*/
|
||||||
|
const struct mca_coll_base_module_1_0_0_t *
|
||||||
|
mca_coll_hierarch_module_init(struct ompi_communicator_t *comm)
|
||||||
|
{
|
||||||
|
mca_base_param_lookup_int(mca_coll_hierarch_verbose_param,
|
||||||
|
&mca_coll_hierarch_verbose);
|
||||||
|
if (mca_coll_hierarch_verbose > 0) {
|
||||||
|
printf("Hello! This is the \"hierarch\" coll component. I'll be your coll component\ntoday. Please tip your waitresses well.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return OMPI_COMM_IS_INTER(comm) ? &inter : &intra;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Finalize module on the communicator
|
||||||
|
*/
|
||||||
|
int mca_coll_hierarch_module_finalize(struct ompi_communicator_t *comm)
|
||||||
|
{
|
||||||
|
return OMPI_SUCCESS;
|
||||||
|
}
|
235
src/mca/coll/hierarch/coll_hierarch.h
Обычный файл
235
src/mca/coll/hierarch/coll_hierarch.h
Обычный файл
@ -0,0 +1,235 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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,
|
||||||
|
int *priority);
|
||||||
|
int mca_coll_hierarch_comm_unquery(struct ompi_communicator_t *comm);
|
||||||
|
|
||||||
|
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_allgather_inter(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_allgatherv_inter(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_allreduce_inter(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_alltoall_inter(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_alltoallv_inter(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_alltoallw_inter(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_barrier_inter(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_bcast_inter(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_exscan_inter(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_gather_inter(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_gatherv_inter(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_inter(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_reduce_scatter_inter(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_scan_inter(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_scatter_inter(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);
|
||||||
|
int mca_coll_hierarch_scatterv_inter(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 */
|
51
src/mca/coll/hierarch/coll_hierarch_barrier.c
Обычный файл
51
src/mca/coll/hierarch/coll_hierarch_barrier.c
Обычный файл
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* 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$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ompi_config.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
#include "mpi.h"
|
||||||
|
#include "include/constants.h"
|
||||||
|
#include "util/output.h"
|
||||||
|
#include "mca/coll/coll.h"
|
||||||
|
#include "mca/coll/base/base.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* barrier_intra
|
||||||
|
*
|
||||||
|
* Function: - barrier using O(N) algorithm
|
||||||
|
* Accepts: - same as MPI_Barrier()
|
||||||
|
* Returns: - MPI_SUCCESS or error code
|
||||||
|
*/
|
||||||
|
int mca_coll_hierarch_barrier_intra(struct ompi_communicator_t *comm)
|
||||||
|
{
|
||||||
|
ompi_output_verbose(10, mca_coll_base_output, "In hierarch barrier_intra");
|
||||||
|
return comm->c_coll_basic_module->coll_barrier(comm);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* barrier_inter
|
||||||
|
*
|
||||||
|
* Function: - barrier using O(log(N)) algorithm
|
||||||
|
* Accepts: - same as MPI_Barrier()
|
||||||
|
* Returns: - MPI_SUCCESS or error code
|
||||||
|
*/
|
||||||
|
int mca_coll_hierarch_barrier_inter(struct ompi_communicator_t *comm)
|
||||||
|
{
|
||||||
|
ompi_output_verbose(10, mca_coll_base_output, "In hierarch barrier_inter");
|
||||||
|
return comm->c_coll_basic_module->coll_barrier(comm);
|
||||||
|
}
|
57
src/mca/coll/hierarch/coll_hierarch_bcast.c
Обычный файл
57
src/mca/coll/hierarch/coll_hierarch_bcast.c
Обычный файл
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* 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$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ompi_config.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
#include "mpi.h"
|
||||||
|
#include "include/constants.h"
|
||||||
|
#include "util/output.h"
|
||||||
|
#include "mca/coll/coll.h"
|
||||||
|
#include "mca/coll/base/base.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* bcast_intra
|
||||||
|
*
|
||||||
|
* Function: - broadcast using O(N) algorithm
|
||||||
|
* Accepts: - same arguments as MPI_Bcast()
|
||||||
|
* Returns: - MPI_SUCCESS or error code
|
||||||
|
*/
|
||||||
|
int mca_coll_hierarch_bcast_intra(void *buff, int count,
|
||||||
|
struct ompi_datatype_t *datatype, int root,
|
||||||
|
struct ompi_communicator_t *comm)
|
||||||
|
{
|
||||||
|
ompi_output_verbose(10, mca_coll_base_output, "In hierarch bcast_intra");
|
||||||
|
return comm->c_coll_basic_module->coll_bcast(buff, count, datatype,
|
||||||
|
root, comm);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* bcast_inter
|
||||||
|
*
|
||||||
|
* Function: - broadcast using O(N) algorithm
|
||||||
|
* Accepts: - same arguments as MPI_Bcast()
|
||||||
|
* Returns: - MPI_SUCCESS or error code
|
||||||
|
*/
|
||||||
|
int mca_coll_hierarch_bcast_inter(void *buff, int count,
|
||||||
|
struct ompi_datatype_t *datatype, int root,
|
||||||
|
struct ompi_communicator_t *comm)
|
||||||
|
{
|
||||||
|
ompi_output_verbose(10, mca_coll_base_output, "In hierarch bcast_inter");
|
||||||
|
return comm->c_coll_basic_module->coll_bcast(buff, count, datatype,
|
||||||
|
root, comm);
|
||||||
|
}
|
103
src/mca/coll/hierarch/coll_hierarch_component.c
Обычный файл
103
src/mca/coll/hierarch/coll_hierarch_component.c
Обычный файл
@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* 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$
|
||||||
|
*
|
||||||
|
* These symbols are in a file by themselves to provide nice linker
|
||||||
|
* semantics. Since linkers generally pull in symbols by object
|
||||||
|
* files, keeping these symbols as the only symbols in this file
|
||||||
|
* prevents utility programs such as "ompi_info" from having to import
|
||||||
|
* entire components just to query their version and parameters.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ompi_config.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
#include "coll-hierarch-version.h"
|
||||||
|
|
||||||
|
#include "mpi.h"
|
||||||
|
#include "mca/coll/coll.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Public string showing the coll ompi_hierarch component version number
|
||||||
|
*/
|
||||||
|
const char *mca_coll_hierarch_component_version_string =
|
||||||
|
"OMPI/MPI hierarch collective MCA component version " MCA_coll_hierarch_VERSION;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Global variable
|
||||||
|
*/
|
||||||
|
int mca_coll_hierarch_priority_param = -1;
|
||||||
|
int mca_coll_hierarch_verbose_param = -1;
|
||||||
|
int mca_coll_hierarch_verbose = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Local function
|
||||||
|
*/
|
||||||
|
static int hierarch_open(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Instantiate the public struct with all of our public information
|
||||||
|
* and pointers to our public functions in it
|
||||||
|
*/
|
||||||
|
|
||||||
|
const mca_coll_base_component_1_0_0_t mca_coll_hierarch_component = {
|
||||||
|
|
||||||
|
/* First, the mca_component_t struct containing meta information
|
||||||
|
about the component itself */
|
||||||
|
|
||||||
|
{
|
||||||
|
/* Indicate that we are a coll v1.0.0 component (which also implies a
|
||||||
|
specific MCA version) */
|
||||||
|
|
||||||
|
MCA_COLL_BASE_VERSION_1_0_0,
|
||||||
|
|
||||||
|
/* Component name and version */
|
||||||
|
|
||||||
|
"hierarch",
|
||||||
|
MCA_coll_hierarch_MAJOR_VERSION,
|
||||||
|
MCA_coll_hierarch_MINOR_VERSION,
|
||||||
|
MCA_coll_hierarch_RELEASE_VERSION,
|
||||||
|
|
||||||
|
/* Component open and close functions */
|
||||||
|
|
||||||
|
hierarch_open,
|
||||||
|
NULL
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Next the MCA v1.0.0 component meta data */
|
||||||
|
|
||||||
|
{
|
||||||
|
/* Whether the component is checkpointable or not */
|
||||||
|
|
||||||
|
true
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Initialization / querying functions */
|
||||||
|
|
||||||
|
mca_coll_hierarch_init_query,
|
||||||
|
mca_coll_hierarch_comm_query,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static int hierarch_open(void)
|
||||||
|
{
|
||||||
|
/* Use a low priority, but allow other components to be lower */
|
||||||
|
|
||||||
|
mca_coll_hierarch_priority_param =
|
||||||
|
mca_base_param_register_int("coll", "hierarch", "priority", NULL, 20);
|
||||||
|
mca_coll_hierarch_verbose_param =
|
||||||
|
mca_base_param_register_int("coll", "hierarch", "verbose", NULL,
|
||||||
|
mca_coll_hierarch_verbose);
|
||||||
|
|
||||||
|
return OMPI_SUCCESS;
|
||||||
|
}
|
61
src/mca/coll/hierarch/coll_hierarch_reduce.c
Обычный файл
61
src/mca/coll/hierarch/coll_hierarch_reduce.c
Обычный файл
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* 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$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ompi_config.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "mpi.h"
|
||||||
|
#include "include/constants.h"
|
||||||
|
#include "util/output.h"
|
||||||
|
#include "mca/coll/coll.h"
|
||||||
|
#include "mca/coll/base/base.h"
|
||||||
|
#include "coll_hierarch.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* reduce_intra
|
||||||
|
*
|
||||||
|
* Function: - reduction using O(N) algorithm
|
||||||
|
* Accepts: - same as MPI_Reduce()
|
||||||
|
* Returns: - MPI_SUCCESS or error code
|
||||||
|
*/
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
ompi_output_verbose(10, mca_coll_base_output, "In hierarch reduce_intra");
|
||||||
|
return comm->c_coll_basic_module->coll_reduce(sbuf, rbuf, count, dtype,
|
||||||
|
op, root, comm);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* reduce_log_inter
|
||||||
|
*
|
||||||
|
* Function: - reduction using O(N) algorithm
|
||||||
|
* Accepts: - same as MPI_Reduce()
|
||||||
|
* Returns: - MPI_SUCCESS or error code
|
||||||
|
*/
|
||||||
|
int mca_coll_hierarch_reduce_inter(void *sbuf, void *rbuf, int count,
|
||||||
|
struct ompi_datatype_t *dtype,
|
||||||
|
struct ompi_op_t *op,
|
||||||
|
int root, struct ompi_communicator_t *comm)
|
||||||
|
{
|
||||||
|
ompi_output_verbose(10, mca_coll_base_output, "In hierarch reduce_inter");
|
||||||
|
return comm->c_coll_basic_module->coll_reduce(sbuf, rbuf, count, dtype,
|
||||||
|
op, root, comm);
|
||||||
|
}
|
22
src/mca/coll/hierarch/configure.params
Обычный файл
22
src/mca/coll/hierarch/configure.params
Обычный файл
@ -0,0 +1,22 @@
|
|||||||
|
# -*- shell-script -*-
|
||||||
|
#
|
||||||
|
# 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$
|
||||||
|
#
|
||||||
|
|
||||||
|
# Specific to this module
|
||||||
|
|
||||||
|
PARAM_INIT_FILE=coll_hierarch.c
|
||||||
|
PARAM_CONFIG_HEADER_FILE=coll_hierarch_config.h
|
||||||
|
PARAM_CONFIG_FILES="Makefile"
|
||||||
|
PARAM_CONFIG_AUX_DIR=config
|
||||||
|
PARAM_WANT_COMPILE_EXTERNAL=1
|
18
src/mca/coll/hierarch/configure.stub
Обычный файл
18
src/mca/coll/hierarch/configure.stub
Обычный файл
@ -0,0 +1,18 @@
|
|||||||
|
#
|
||||||
|
# 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$
|
||||||
|
#
|
||||||
|
# Don't really need anything in here -- we just want a configure
|
||||||
|
# script so that this can be a standalone component.
|
||||||
|
#
|
||||||
|
|
||||||
|
AC_DEFUN([MCA_CONFIGURE_STUB],[])
|
Загрузка…
x
Ссылка в новой задаче
Block a user