Add a new reliable multicast component based on the "spread" library
Thanks to Srini Nariangadu (Cisco) for the contribution! This commit was SVN r23076.
Этот коммит содержится в:
родитель
c93af95351
Коммит
3f262bf0b6
@ -103,6 +103,7 @@ typedef struct {
|
||||
orte_rmcast_callback_fn_t cbfunc_iovec;
|
||||
orte_rmcast_callback_buffer_fn_t cbfunc_buffer;
|
||||
void *cbdata;
|
||||
bool send_complete;
|
||||
} rmcast_base_send_t;
|
||||
ORTE_DECLSPEC OBJ_CLASS_DECLARATION(rmcast_base_send_t);
|
||||
|
||||
|
@ -45,16 +45,17 @@ typedef int32_t orte_rmcast_tag_t;
|
||||
#define ORTE_RMCAST_TAG_T OPAL_INT32
|
||||
|
||||
/* tag values for well-known services */
|
||||
#define ORTE_RMCAST_TAG_WILDCARD 0
|
||||
#define ORTE_RMCAST_TAG_INVALID 1
|
||||
#define ORTE_RMCAST_TAG_BOOTSTRAP 2
|
||||
#define ORTE_RMCAST_TAG_ANNOUNCE 3
|
||||
#define ORTE_RMCAST_TAG_OUTPUT 4
|
||||
#define ORTE_RMCAST_TAG_PS 5
|
||||
#define ORTE_RMCAST_TAG_MSG 6
|
||||
#define ORTE_RMCAST_TAG_TOOL 7
|
||||
#define ORTE_RMCAST_TAG_IOF 8
|
||||
#define ORTE_RMCAST_TAG_UPDATE_STATE 9
|
||||
#define ORTE_RMCAST_TAG_WILDCARD 0
|
||||
#define ORTE_RMCAST_TAG_INVALID 1
|
||||
#define ORTE_RMCAST_TAG_BOOTSTRAP 2
|
||||
#define ORTE_RMCAST_TAG_ANNOUNCE 3
|
||||
#define ORTE_RMCAST_TAG_OUTPUT 4
|
||||
#define ORTE_RMCAST_TAG_PS 5
|
||||
#define ORTE_RMCAST_TAG_MSG 6
|
||||
#define ORTE_RMCAST_TAG_TOOL 7
|
||||
#define ORTE_RMCAST_TAG_IOF 8
|
||||
#define ORTE_RMCAST_TAG_STATE 9
|
||||
#define ORTE_RMCAST_TAG_STATE_ACK 10
|
||||
|
||||
/* starting value for dynamically assignable tags */
|
||||
#define ORTE_RMCAST_TAG_DYNAMIC 100
|
||||
|
38
orte/mca/rmcast/spread/Makefile.am
Обычный файл
38
orte/mca/rmcast/spread/Makefile.am
Обычный файл
@ -0,0 +1,38 @@
|
||||
#
|
||||
# Copyright (c) 2009 Cisco Systems, Inc. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
AM_CPPFLAGS = $(rmcast_spread_CPPFLAGS)
|
||||
|
||||
# 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_rmcast_spread_DSO
|
||||
component_noinst =
|
||||
component_install = mca_rmcast_spread.la
|
||||
else
|
||||
component_noinst = libmca_rmcast_spread.la
|
||||
component_install =
|
||||
endif
|
||||
|
||||
rmcast_spread_SOURCES = \
|
||||
rmcast_spread.c \
|
||||
rmcast_spread.h \
|
||||
rmcast_spread_component.c
|
||||
|
||||
mcacomponentdir = $(pkglibdir)
|
||||
mcacomponent_LTLIBRARIES = $(component_install)
|
||||
mca_rmcast_spread_la_SOURCES = $(rmcast_spread_SOURCES)
|
||||
mca_rmcast_spread_la_LDFLAGS = -module -avoid-version $(rmcast_spread_LDFLAGS)
|
||||
mca_rmcast_spread_la_LIBADD = $(rmcast_spread_LIBS)
|
||||
|
||||
noinst_LTLIBRARIES = $(component_noinst)
|
||||
libmca_rmcast_spread_la_SOURCES = $(rmcast_spread_SOURCES)
|
||||
libmca_rmcast_spread_la_LDFLAGS = -module -avoid-version $(rmcast_spread_LDFLAGS)
|
||||
libmca_rmcast_spread_la_LIBADD = $(rmcast_spread_LIBS)
|
25
orte/mca/rmcast/spread/configure.m4
Обычный файл
25
orte/mca/rmcast/spread/configure.m4
Обычный файл
@ -0,0 +1,25 @@
|
||||
dnl -*- shell-script -*-
|
||||
dnl
|
||||
dnl Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
||||
dnl $COPYRIGHT$
|
||||
dnl
|
||||
dnl Additional copyrights may follow
|
||||
dnl
|
||||
dnl $HEADER$
|
||||
dnl
|
||||
|
||||
# MCA_rmcast_spread_CONFIG([action-if-found], [action-if-not-found])
|
||||
# -----------------------------------------------------------
|
||||
AC_DEFUN([MCA_rmcast_spread_CONFIG],[
|
||||
OPAL_SETUP_COMPONENT_PACKAGE([rmcast],
|
||||
[spread],
|
||||
[spread],
|
||||
[include/sp.h],
|
||||
[libspread*],
|
||||
[sp.h],
|
||||
[spread],
|
||||
[SP_version],
|
||||
[],
|
||||
[$1],
|
||||
[$2])
|
||||
])dnl
|
11
orte/mca/rmcast/spread/configure.params
Обычный файл
11
orte/mca/rmcast/spread/configure.params
Обычный файл
@ -0,0 +1,11 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
PARAM_CONFIG_FILES="Makefile"
|
1468
orte/mca/rmcast/spread/rmcast_spread.c
Обычный файл
1468
orte/mca/rmcast/spread/rmcast_spread.c
Обычный файл
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
43
orte/mca/rmcast/spread/rmcast_spread.h
Обычный файл
43
orte/mca/rmcast/spread/rmcast_spread.h
Обычный файл
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
*
|
||||
* $HEADER$
|
||||
*/
|
||||
|
||||
#ifndef ORTE_RMCAST_SPREAD_H
|
||||
#define ORTE_RMCAST_SPREAD_H
|
||||
|
||||
#include "orte_config.h"
|
||||
|
||||
#include "opal/mca/mca.h"
|
||||
#include "opal/mca/base/base.h"
|
||||
|
||||
#include "orte/mca/rmcast/rmcast.h"
|
||||
|
||||
BEGIN_C_DECLS
|
||||
|
||||
#define ORTE_RMCAST_SPREAD_MAX_MSG_SIZE 1500
|
||||
|
||||
typedef struct {
|
||||
orte_rmcast_base_component_t super;
|
||||
int max_msg_size;
|
||||
} orte_rmcast_spread_component_t;
|
||||
|
||||
|
||||
/*
|
||||
* Module open / close
|
||||
*/
|
||||
int orte_rmcast_spread_component_open(void);
|
||||
int orte_rmcast_spread_component_close(void);
|
||||
int orte_rmcast_spread_component_query(mca_base_module_t **module, int *priority);
|
||||
|
||||
|
||||
ORTE_MODULE_DECLSPEC extern orte_rmcast_spread_component_t mca_rmcast_spread_component;
|
||||
ORTE_DECLSPEC extern orte_rmcast_module_t orte_rmcast_spread_module;
|
||||
|
||||
END_C_DECLS
|
||||
|
||||
#endif /* ORTE_RMCAST_SPREAD_H */
|
92
orte/mca/rmcast/spread/rmcast_spread_component.c
Обычный файл
92
orte/mca/rmcast/spread/rmcast_spread_component.c
Обычный файл
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2010 Cisco Systems, Inc. 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 "orte_config.h"
|
||||
#include "orte/constants.h"
|
||||
|
||||
#include "opal/mca/base/base.h"
|
||||
#include "opal/mca/base/mca_base_param.h"
|
||||
|
||||
#include "orte/util/proc_info.h"
|
||||
|
||||
#include "orte/mca/rmcast/rmcast.h"
|
||||
#include "rmcast_spread.h"
|
||||
|
||||
extern orte_rmcast_module_t orte_rmcast_spread_module;
|
||||
|
||||
/*
|
||||
* Public string showing the rmcast spread component version number
|
||||
*/
|
||||
const char *mca_rmcast_spread_component_version_string =
|
||||
"Open MPI spread rmcast MCA component version " ORTE_VERSION;
|
||||
|
||||
/*
|
||||
* Instantiate the public struct with all of our public information
|
||||
* and pointers to our public functions in it
|
||||
*/
|
||||
orte_rmcast_spread_component_t mca_rmcast_spread_component = {
|
||||
{
|
||||
{
|
||||
ORTE_RMCAST_BASE_VERSION_1_0_0,
|
||||
|
||||
/* Component name and version */
|
||||
"spread",
|
||||
ORTE_MAJOR_VERSION,
|
||||
ORTE_MINOR_VERSION,
|
||||
ORTE_RELEASE_VERSION,
|
||||
|
||||
/* Component open and close functions */
|
||||
orte_rmcast_spread_component_open,
|
||||
orte_rmcast_spread_component_close,
|
||||
orte_rmcast_spread_component_query
|
||||
},
|
||||
{
|
||||
/* The component is checkpoint ready */
|
||||
MCA_BASE_METADATA_PARAM_CHECKPOINT
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
orte_rmcast_spread_component_open(void)
|
||||
{
|
||||
mca_base_component_t *c = &mca_rmcast_spread_component.super.version;
|
||||
|
||||
mca_base_param_reg_int(c, "max_msg_size",
|
||||
"Max #bytes in a single msg (must be > 0)",
|
||||
false, false,
|
||||
ORTE_RMCAST_SPREAD_MAX_MSG_SIZE,
|
||||
&mca_rmcast_spread_component.max_msg_size);
|
||||
|
||||
return ORTE_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
int orte_rmcast_spread_component_query(mca_base_module_t **module, int *priority)
|
||||
{
|
||||
/* if we built, then we probably want to be selected */
|
||||
*priority = 1000;
|
||||
*module = (mca_base_module_t*)&orte_rmcast_spread_module;
|
||||
return ORTE_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
orte_rmcast_spread_component_close(void)
|
||||
{
|
||||
return ORTE_SUCCESS;
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user