1
1

Add a new reliable multicast component based on the "spread" library

Thanks to Srini Nariangadu (Cisco) for the contribution!

This commit was SVN r23076.
Этот коммит содержится в:
Ralph Castain 2010-05-02 17:29:41 +00:00
родитель c93af95351
Коммит 3f262bf0b6
8 изменённых файлов: 1689 добавлений и 10 удалений

Просмотреть файл

@ -103,6 +103,7 @@ typedef struct {
orte_rmcast_callback_fn_t cbfunc_iovec; orte_rmcast_callback_fn_t cbfunc_iovec;
orte_rmcast_callback_buffer_fn_t cbfunc_buffer; orte_rmcast_callback_buffer_fn_t cbfunc_buffer;
void *cbdata; void *cbdata;
bool send_complete;
} rmcast_base_send_t; } rmcast_base_send_t;
ORTE_DECLSPEC OBJ_CLASS_DECLARATION(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 #define ORTE_RMCAST_TAG_T OPAL_INT32
/* tag values for well-known services */ /* tag values for well-known services */
#define ORTE_RMCAST_TAG_WILDCARD 0 #define ORTE_RMCAST_TAG_WILDCARD 0
#define ORTE_RMCAST_TAG_INVALID 1 #define ORTE_RMCAST_TAG_INVALID 1
#define ORTE_RMCAST_TAG_BOOTSTRAP 2 #define ORTE_RMCAST_TAG_BOOTSTRAP 2
#define ORTE_RMCAST_TAG_ANNOUNCE 3 #define ORTE_RMCAST_TAG_ANNOUNCE 3
#define ORTE_RMCAST_TAG_OUTPUT 4 #define ORTE_RMCAST_TAG_OUTPUT 4
#define ORTE_RMCAST_TAG_PS 5 #define ORTE_RMCAST_TAG_PS 5
#define ORTE_RMCAST_TAG_MSG 6 #define ORTE_RMCAST_TAG_MSG 6
#define ORTE_RMCAST_TAG_TOOL 7 #define ORTE_RMCAST_TAG_TOOL 7
#define ORTE_RMCAST_TAG_IOF 8 #define ORTE_RMCAST_TAG_IOF 8
#define ORTE_RMCAST_TAG_UPDATE_STATE 9 #define ORTE_RMCAST_TAG_STATE 9
#define ORTE_RMCAST_TAG_STATE_ACK 10
/* starting value for dynamically assignable tags */ /* starting value for dynamically assignable tags */
#define ORTE_RMCAST_TAG_DYNAMIC 100 #define ORTE_RMCAST_TAG_DYNAMIC 100

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 Обычный файл
Просмотреть файл

@ -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 Обычный файл
Просмотреть файл

@ -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 Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

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 */

Просмотреть файл

@ -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;
}