1
1

More changes from Red Storm port

- only call sched_yield if it exists
  - don't fail out if modex doens't work in ob1
  - bunch of fixes for Portals BTL
  - add cnos rml component
  - add NULL gpr component (should only be used if replica AND proxy
    fail to load)  

This commit was SVN r6629.
Этот коммит содержится в:
Brian Barrett 2005-07-27 23:07:14 +00:00
родитель 7d267e63a3
Коммит 6aa464b67e
19 изменённых файлов: 949 добавлений и 26 удалений

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

@ -37,6 +37,10 @@ AC_DEFUN([OMPI_MCA],[
# --enable-mca-dso=[.+,]*COMPONENT_TYPE-COMPONENT_NAME[.+,]*
# --disable-mca-dso
#
AC_ARG_ENABLE([mca-no-build],
[AC_HELP_STRING([---enable-mca-no-build=LIST],
[comma-separated list of type-component pairs
that will not be built.])])
AC_ARG_ENABLE(mca-dso,
AC_HELP_STRING([--enable-mca-dso=LIST],
[comma-separated list of types and/or
@ -44,9 +48,7 @@ AC_DEFUN([OMPI_MCA],[
run-time loadable components (as opposed to
statically linked in), if supported on this
platform. The default is to build all components
as DSOs; the --disable-mca-dso[=LIST] form can be
used to disable building all or some
types/components as DSOs]))
as DSOs]))
AC_ARG_ENABLE(mca-static,
AC_HELP_STRING([--enable-mca-static=LIST],
[comma-separated list of types and/or
@ -64,6 +66,32 @@ AC_DEFUN([OMPI_MCA],[
not be empty and implies given component pairs are
build as static components.]))
AC_MSG_CHECKING([which components should be disabled])
if test "$enable_mca_no_build" = "yes"; then
AC_MSG_RESULT([yes])
AC_MSG_ERROR([*** The enable-mca-no-build flag requires an explicit list
*** of type-component pairs. For example, --enable-mca-direct=pml-teg])
else
ifs_save="$IFS"
IFS="${IFS}$PATH_SEPARATOR,"
msg=
for item in $enable_mca_no_build; do
type="`echo $item | cut -f1 -d-`"
comp="`echo $item | cut -f2- -d-`"
if test -z $type -o -z $comp ; then
AC_MSG_ERROR([*** The enable-no-build flag requires a
*** list of type-component pairs. Invalid input detected.])
else
str="`echo DISABLE_${type}_${comp}=1 | sed s/-/_/g`"
eval $str
msg="$item $msg"
fi
done
IFS="$ifs_save"
fi
AC_MSG_RESULT([$msg])
unset msg
#
# First, add all the mca-direct components / types into the mca-static
# lists and create a list of component types that are direct compile,
@ -791,6 +819,7 @@ AC_DEFUN([MCA_COMPONENT_BUILD_CHECK],[
framework=$2
component=$3
component_path="$srcdir/$project/mca/$framework/$component"
want_component=0
# build if:
# - the component type is direct and we are that component
@ -828,9 +857,16 @@ AC_DEFUN([MCA_COMPONENT_BUILD_CHECK],[
want_component=0
fi
fi
AS_IF([test "$want_component" = "1"], [$4], [$5])
fi
# if we were explicitly disabled, don't build :)
str="DISABLED_COMPONENT_CHECK=\$DISABLE_${framework}_$component"
eval $str
if test "$DISABLED_COMPONENT_CHECK" = "1" ; then
want_component=0
fi
AS_IF([test "$want_component" = "1"], [$4], [$5])
])

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

@ -1132,7 +1132,7 @@ ompi_show_title "Library and Function tests"
# vscanf
AC_CHECK_LIB([util], [openpty], [WRAPPER_EXTRA_LIBS="$WRAPPER_EXTRA_LIBS -lutil" LIBLAM_EXTRA_LIBS="$LIBLAMEXTRALIBS -lutil" LIBS="$LIBS -lutil]")
AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf openpty isatty htonl ntohl htons ntohs getpwuid fork waitpid execve pipe setsid])
AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf openpty isatty htonl ntohl htons ntohs getpwuid fork waitpid execve pipe setsid mmap])
#
# Make sure we can copy va_lists (need check declared, not linkable)
@ -1170,12 +1170,15 @@ if test "$MSG" = "not_found"; then
[MSG=yes],[MSG=not_found])
if test "$MSG" = "not_found"; then
LIBS="$LIBS_save"
AC_MSG_RESULT([cannot find sched_yield])
AC_MSG_ERROR([Cannot continue])
fi
fi
AC_MSG_RESULT([$MSG])
# see if we actually have sched_yeild. Use AC_CHECK_FUNCS so that it
# does the glibs "not implemented" check. Will use the current LIBS,
# so will check in -lrt if we decided we needed it above
AC_CHECK_FUNCS([sched_yield])
#
# See if we need the math library explicitly linked in
#

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

@ -46,11 +46,11 @@ AC_DEFUN([MCA_btl_portals_CONFIG_VAL], [
AC_DEFUN([MCA_btl_portals_CONFIG_VALS], [
# User configuration options
MCA_btl_portals_CONFIG_VAL([send-table-id],
[OMPI_BTL_PORTALS_SEND_TABLE_ID], [3],
[OMPI_BTL_PORTALS_SEND_TABLE_ID], [30],
[Portals table id to use for send/recv ])
MCA_btl_portals_CONFIG_VAL([rdma-table-id],
[OMPI_BTL_PORTALS_RDMA_TABLE_ID], [4],
[OMPI_BTL_PORTALS_RDMA_TABLE_ID], [31],
[Portals table id to use for RDMA request])
MCA_btl_portals_CONFIG_VAL([debug-level],

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

@ -31,7 +31,7 @@
#include <portals/portals3.h>
#define PTL_EQ_HANDLER_NONE PTL_HANDLE_NONE
#define PTL_EQ_HANDLER_NONE NULL
#else

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

@ -22,6 +22,13 @@
#include "btl_portals.h"
#include "btl_portals_compat.h"
#if 0
int cnos_get_size(void);
int cnos_get_rank(void);
int cnos_get_nidpid_map(ptl_process_id_t **map);
#else
#include <catamount/cnos_mpi_os.h>
#endif
int
mca_btl_portals_init_compat(mca_btl_portals_component_t *comp)
@ -73,12 +80,14 @@ mca_btl_portals_init_compat(mca_btl_portals_component_t *comp)
&(btl->portals_ni_limits), /* save our limits somewhere */
&(btl->portals_ni_h) /* our interface handle */
);
if (PTL_OK != ret) {
if (PTL_OK != ret && PTL_IFACE_DUP != ret) {
opal_output_verbose(10, mca_btl_portals_component.portals_output,
"PtlNIInit failed, returning %d\n", ret);
return OMPI_ERR_FATAL;
}
opal_output_verbose(10, mca_btl_portals_component.portals_output,
"max ptl index: %d", btl->portals_ni_limits.max_pt_index);
return OMPI_SUCCESS;
}
@ -90,6 +99,8 @@ mca_btl_portals_add_procs_compat(struct mca_btl_portals_module_t* btl,
ptl_process_id_t **portals_procs)
{
int nptl_procs = 0;
cnos_nidpid_map_t *map;
int i;
/*
* FIXME - XXX - FIXME
@ -97,7 +108,7 @@ mca_btl_portals_add_procs_compat(struct mca_btl_portals_module_t* btl,
* procs list. Don't know what to do about that...
*/
nptl_procs = cnos_get_nidpid_map(portals_procs);
nptl_procs = cnos_get_nidpid_map(&map);
if (nptl_procs <= 0) {
opal_output_verbose(10, mca_btl_portals_component.portals_output,
"cnos_get_nidpid_map() returned %d", nptl_procs);
@ -109,5 +120,23 @@ mca_btl_portals_add_procs_compat(struct mca_btl_portals_module_t* btl,
return OMPI_ERR_FATAL;
}
return OMPI_ERR_NOT_IMPLEMENTED;
/* get space for the portals procs list */
*portals_procs = calloc(nprocs, sizeof(ptl_process_id_t));
if (NULL == *portals_procs) {
opal_output_verbose(10, mca_btl_portals_component.portals_output,
"calloc(nprocs, sizeof(ptl_process_id_t)) failed");
return OMPI_ERR_TEMP_OUT_OF_RESOURCE;
}
for (i = 0 ; i < nprocs ; ++i) {
opal_output_verbose(120, mca_btl_portals_component.portals_output,
"rank %d: nid %ld, pid %ld", i,
map[i].nid, map[i].pid);
/* update my local array of proc structs */
(*portals_procs)[i].nid = map[i].nid;
(*portals_procs)[i].pid = map[i].pid;
}
return OMPI_SUCCESS;
}

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

@ -359,11 +359,15 @@ mca_btl_portals_component_progress(void)
#endif
while (true) {
opal_output_verbose(30, mca_btl_portals_component.portals_output,
"PtlEQPoll about to be called");
ret = PtlEQPoll(module->portals_eq_handles,
OMPI_BTL_PORTALS_EQ_SIZE, /* number of eq handles */
0, /* poll time */
1, /* poll time */
&ev,
&which);
opal_output_verbose(30, mca_btl_portals_component.portals_output,
"PtlEQPoll returned %d\n", ret);
if (PTL_EQ_EMPTY == ret) {
/* nothing to see here - move along */
mca_btl_portals_progress_queued_sends(module);
@ -380,10 +384,16 @@ mca_btl_portals_component_progress(void)
switch (which) {
case OMPI_BTL_PORTALS_EQ_RECV:
opal_output_verbose(30,
mca_btl_portals_component.portals_output,
"receive event about to be processes");
mca_btl_portals_progress_queued_sends(module);
mca_btl_portals_process_recv(module, &ev);
break;
case OMPI_BTL_PORTALS_EQ_SEND:
opal_output_verbose(30,
mca_btl_portals_component.portals_output,
"send event about to be processes");
mca_btl_portals_process_send(module, &ev);
break;
case OMPI_BTL_PORTALS_EQ_RDMA:

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

@ -46,13 +46,15 @@ mca_btl_portals_recv_enable(mca_btl_portals_module_t *btl)
md.user_ptr = NULL;
md.eq_handle = PTL_EQ_NONE;
opal_output_verbose(90, mca_btl_portals_component.portals_output,
"About to create reject entry");
ret = PtlMEAttach(btl->portals_ni_h,
OMPI_BTL_PORTALS_SEND_TABLE_ID,
any_proc,
0, /* match */
0, /* ignore */
PTL_RETAIN,
PTL_INS_AFTER,
PTL_INS_BEFORE,
&(btl->portals_recv_reject_me_h));
if (PTL_OK != ret) {
opal_output(mca_btl_portals_component.portals_output,

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

@ -65,9 +65,7 @@ int mca_pml_ob1_enable(bool enable)
/* post this processes datatype */
proc_arch = ompi_proc_local()->proc_arch;
proc_arch = htonl(proc_arch);
rc = mca_base_modex_send(&mca_pml_ob1_component.pmlm_version, &proc_arch, sizeof(proc_arch));
if(rc != OMPI_SUCCESS)
return rc;
(void) mca_base_modex_send(&mca_pml_ob1_component.pmlm_version, &proc_arch, sizeof(proc_arch));
OBJ_CONSTRUCT(&mca_pml_ob1.lock, opal_mutex_t);
@ -267,12 +265,14 @@ int mca_pml_ob1_add_procs(ompi_proc_t** procs, size_t nprocs)
size_t size = sizeof(uint32_t);
rc = mca_base_modex_recv(&mca_pml_ob1_component.pmlm_version, procs[p],
(void**)&proc_arch, &size);
if(rc != OMPI_SUCCESS)
return rc;
if(size != sizeof(uint32_t))
return OMPI_ERROR;
procs[p]->proc_arch = ntohl(*proc_arch);
free(proc_arch);
if(rc == OMPI_SUCCESS) {
if(size != sizeof(uint32_t))
return OMPI_ERROR;
procs[p]->proc_arch = ntohl(*proc_arch);
free(proc_arch);
} else {
procs[p]->proc_arch = ompi_proc_local()->proc_arch;
}
}
/* attempt to add all procs to each ob1 */

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

@ -699,7 +699,9 @@ void mca_pml_ob1_send_request_put(
orte_errmgr.abort();
}
}
#ifdef HAVE_SCHED_YIELD
sched_yield();
#endif
}

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

@ -237,7 +237,7 @@ opal_progress(void)
* the processor is oversubscribed - this will result in a best-case
* latency equivalent to the time-slice.
*/
#ifndef WIN32
#if !defined(WIN32) && defined(HAVE_SCHED_YIELD)
/* TODO: Find the windows equivalent for this */
sched_yield();
#endif

44
orte/mca/gpr/null/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,44 @@
#
# 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 (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# Use the top-level Makefile.options
include $(top_ompi_srcdir)/config/Makefile.options
sources = \
gpr_null_component.c \
gpr_null.c
# 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_gpr_null_DSO
component_noinst =
component_install = mca_gpr_null.la
else
component_noinst = libmca_gpr_null.la
component_install =
endif
mcacomponentdir = $(libdir)/openmpi
mcacomponent_LTLIBRARIES = $(component_install)
mca_gpr_null_la_SOURCES = $(sources)
mca_gpr_null_la_LDFLAGS = -module -avoid-version
noinst_LTLIBRARIES = $(component_noinst)
libmca_gpr_null_la_SOURCES =$(sources)
libmca_gpr_null_la_LDFLAGS = -module -avoid-version

21
orte/mca/gpr/null/configure.params Обычный файл
Просмотреть файл

@ -0,0 +1,21 @@
# -*- 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 (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# Specific to this module
PARAM_INIT_FILE=gpr_null.c
PARAM_CONFIG_FILES="Makefile"

280
orte/mca/gpr/null/gpr_null.c Обычный файл
Просмотреть файл

@ -0,0 +1,280 @@
/* -*- C -*-
*
* 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 (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "orte_config.h"
#include "orte/mca/gpr/gpr.h"
#include "orte/include/orte_constants.h"
#include "opal/util/output.h"
static int
orte_gpr_null_module_init(void)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_begin_compound_cmd(void)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_stop_compound_cmd(void)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_exec_compound_cmd(void)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_cleanup_job(orte_jobid_t jobid)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_cleanup_proc(orte_process_name_t * proc)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_preallocate_segment(char *name, size_t num_slots)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_delete_segment(char *segment)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_delete_segment_nb(char *segment,
orte_gpr_notify_cb_fn_t cbfunc,
void *user_tag)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_put(size_t cnt, orte_gpr_value_t ** values)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_put_nb(size_t cnt, orte_gpr_value_t ** values,
orte_gpr_notify_cb_fn_t cbfunc, void *user_tag)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_get(orte_gpr_addr_mode_t addr_mode,
char *segment, char **tokens, char **keys,
size_t * cnt, orte_gpr_value_t *** values)
{
return ORTE_ERR_NOT_IMPLEMENTED;
}
static int
orte_gpr_null_get_nb(orte_gpr_addr_mode_t addr_mode,
char *segment, char **tokens, char **keys,
orte_gpr_notify_cb_fn_t cbfunc, void *user_tag)
{
return ORTE_ERR_NOT_IMPLEMENTED;
}
static int
orte_gpr_null_delete_entries(orte_gpr_addr_mode_t addr_mode,
char *segment, char **tokens,
char **keys)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_delete_entries_nb(orte_gpr_addr_mode_t addr_mode,
char *segment, char **tokens,
char **keys,
orte_gpr_notify_cb_fn_t cbfunc,
void *user_tag)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_index(char *segment, size_t * cnt, char ***index)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_index_nb(char *segment,
orte_gpr_notify_cb_fn_t cbfunc,
void *user_tag)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_subscribe(size_t num_subs,
orte_gpr_subscription_t ** subscriptions,
size_t num_trigs,
orte_gpr_trigger_t ** triggers)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_unsubscribe(orte_gpr_subscription_id_t sub_number)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_cancel_trigger(orte_gpr_trigger_id_t trig_number)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_dump_all(int output_id)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_dump_segments(int output_id)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_dump_triggers(int output_id)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_dump_subscriptions(int output_id)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_dump_callbacks(int output_id)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_dump_notify_msg(orte_gpr_notify_message_t * msg,
int output_id)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_dump_notify_data(orte_gpr_notify_data_t * data,
int output_id)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_dump_value(orte_gpr_value_t * value, int output_id)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_increment_value(orte_gpr_value_t * value)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_decrement_value(orte_gpr_value_t * value)
{
return ORTE_SUCCESS;
}
static int
orte_gpr_null_xfer_payload(orte_gpr_value_union_t * dest,
orte_gpr_value_union_t * src,
orte_data_type_t type)
{
return ORTE_SUCCESS;
}
/*
* setup the function pointers for the module
*/
orte_gpr_base_module_t orte_gpr_null_module = {
/* INIT */
orte_gpr_null_module_init,
/* BLOCKING OPERATIONS */
orte_gpr_null_get,
orte_gpr_null_put,
orte_gpr_null_delete_entries,
orte_gpr_null_delete_segment,
orte_gpr_null_index,
/* NON-BLOCKING OPERATIONS */
orte_gpr_null_get_nb,
orte_gpr_null_put_nb,
orte_gpr_null_delete_entries_nb,
orte_gpr_null_delete_segment_nb,
orte_gpr_null_index_nb,
/* GENERAL OPERATIONS */
orte_gpr_null_preallocate_segment,
orte_gpr_null_xfer_payload,
/* ARITHMETIC OPERATIONS */
orte_gpr_null_increment_value,
orte_gpr_null_decrement_value,
/* SUBSCRIBE OPERATIONS */
orte_gpr_null_subscribe,
orte_gpr_null_unsubscribe,
orte_gpr_null_cancel_trigger,
/* COMPOUND COMMANDS */
orte_gpr_null_begin_compound_cmd,
orte_gpr_null_stop_compound_cmd,
orte_gpr_null_exec_compound_cmd,
/* DIAGNOSTIC OPERATIONS */
orte_gpr_null_dump_all,
orte_gpr_null_dump_segments,
orte_gpr_null_dump_triggers,
orte_gpr_null_dump_subscriptions,
orte_gpr_null_dump_callbacks,
orte_gpr_null_dump_notify_msg,
orte_gpr_null_dump_notify_data,
orte_gpr_null_dump_value,
/* CLEANUP OPERATIONS */
orte_gpr_null_cleanup_job,
orte_gpr_null_cleanup_proc
};

70
orte/mca/gpr/null/gpr_null_component.c Обычный файл
Просмотреть файл

@ -0,0 +1,70 @@
/* -*- C -*-
*
* 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 (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "orte_config.h"
#include "orte/mca/gpr/gpr.h"
#include "orte/include/orte_constants.h"
extern orte_gpr_base_module_t orte_gpr_null_module;
int
orte_gpr_null_open(void)
{
return ORTE_SUCCESS;
}
int
orte_gpr_null_close(void)
{
return ORTE_SUCCESS;
}
orte_gpr_base_module_t *
orte_gpr_null_init(bool *allow_multi_user_threads,
bool *have_hidden_threads,
int *priority)
{
*priority = 0;
return &orte_gpr_null_module;
}
int
orte_gpr_null_finalize(void)
{
return ORTE_SUCCESS;
}
mca_gpr_base_component_t mca_gpr_null_component = {
{
MCA_GPR_BASE_VERSION_1_0_0,
"null", /* MCA module name */
ORTE_MAJOR_VERSION, /* MCA module major version */
ORTE_MINOR_VERSION, /* MCA module minor version */
ORTE_RELEASE_VERSION, /* MCA module release version */
orte_gpr_null_open, /* module open */
orte_gpr_null_close /* module close */
},
{
false /* checkpoint / restart */
},
orte_gpr_null_init, /* module init */
orte_gpr_null_finalize /* module shutdown */
};

46
orte/mca/rml/cnos/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,46 @@
#
# 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 (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# Use the top-level Makefile.options
include $(top_ompi_srcdir)/config/Makefile.options
sources = \
rml_cnos.h \
rml_cnos.c
# 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_rml_cnos_DSO
component_noinst =
component_install = mca_rml_cnos.la
else
component_noinst = libmca_rml_cnos.la
component_install =
endif
mcacomponentdir = $(libdir)/openmpi
mcacomponent_LTLIBRARIES = $(component_install)
mca_rml_cnos_la_SOURCES = $(sources)
mca_rml_cnos_la_LIBADD = $(LIBOMPI_LA)
mca_rml_cnos_la_LDFLAGS = -module -avoid-version
noinst_LTLIBRARIES = $(component_noinst)
libmca_rml_cnos_la_SOURCES = $(sources)
libmca_rml_cnos_la_LDFLAGS = -module -avoid-version

23
orte/mca/rml/cnos/configure.m4 Обычный файл
Просмотреть файл

@ -0,0 +1,23 @@
# -*- 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 (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# MCA_rml_cnos_CONFIG([action-if-found], [action-if-not-found])
# -----------------------------------------------------------
AC_DEFUN([MCA_rml_cnos_CONFIG],[
# check for cnos functions
AC_CHECK_FUNC([cnos_barrier], [$1], [$2])
])dnl

21
orte/mca/rml/cnos/configure.params Обычный файл
Просмотреть файл

@ -0,0 +1,21 @@
# -*- 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 (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# Specific to this module
PARAM_INIT_FILE=rml_cnos.c
PARAM_CONFIG_FILES="Makefile"

234
orte/mca/rml/cnos/rml_cnos.c Обычный файл
Просмотреть файл

@ -0,0 +1,234 @@
/*
* 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 (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "orte_config.h"
#include "include/orte_constants.h"
#include "opal/util/output.h"
#include "mca/rml/base/base.h"
#include "rml_cnos.h"
#ifdef HAVE_CNOS
int cnos_barrier(void);
#endif
orte_rml_component_t mca_rml_cnos_component = {
/* First, the mca_base_component_t struct containing meta
* information about the component itself */
{
/* Indicate that we are a rml v1.0.0 component (which also
* implies a specific MCA version) */
ORTE_RML_BASE_VERSION_1_0_0,
"cnos", /* MCA component name */
ORTE_MAJOR_VERSION, /* MCA component major version */
ORTE_MINOR_VERSION, /* MCA component minor version */
ORTE_RELEASE_VERSION, /* MCA component release version */
orte_rml_cnos_open, /* component open */
orte_rml_cnos_close, /* component close */
}
,
/* Next the MCA v1.0.0 component meta data */
{
/* Whether the component is checkpointable or not */
false}
,
orte_rml_cnos_init
};
orte_rml_module_t orte_rml_cnos_module = {
orte_rml_cnos_module_init,
orte_rml_cnos_module_fini,
orte_rml_cnos_get_uri,
orte_rml_cnos_set_uri,
orte_rml_cnos_parse_uris,
orte_rml_cnos_ping,
orte_rml_cnos_send,
orte_rml_cnos_send_nb,
orte_rml_cnos_send_buffer,
orte_rml_cnos_send_buffer_nb,
orte_rml_cnos_recv,
orte_rml_cnos_recv_nb,
orte_rml_cnos_recv_buffer,
orte_rml_cnos_recv_buffer_nb,
orte_rml_cnos_recv_cancel,
orte_rml_cnos_barrier,
orte_rml_cnos_xcast
};
int
orte_rml_cnos_open(void)
{
return ORTE_SUCCESS;
}
orte_rml_module_t *
orte_rml_cnos_init(int *priority)
{
*priority = 1;
return &orte_rml_cnos_module;
}
int
orte_rml_cnos_close(void)
{
return ORTE_SUCCESS;
}
int
orte_rml_cnos_module_init(void)
{
return ORTE_SUCCESS;
}
int
orte_rml_cnos_module_fini(void)
{
return ORTE_SUCCESS;
}
char *
orte_rml_cnos_get_uri(void)
{
return "(none)";
}
int
orte_rml_cnos_set_uri(const char *name)
{
return ORTE_ERR_NOT_SUPPORTED;
}
int
orte_rml_cnos_parse_uris(const char *uri,
orte_process_name_t * peer, char ***uris)
{
return ORTE_ERR_NOT_SUPPORTED;
}
int
orte_rml_cnos_ping(const char *uri, const struct timeval *tv)
{
return ORTE_ERR_NOT_SUPPORTED;
}
int
orte_rml_cnos_send(orte_process_name_t * peer,
struct iovec *msg, int count, int tag, int flags)
{
return ORTE_ERR_NOT_SUPPORTED;
}
int
orte_rml_cnos_send_buffer(orte_process_name_t * peer,
orte_buffer_t * buffer,
orte_rml_tag_t tag, int flags)
{
return ORTE_ERR_NOT_SUPPORTED;
}
int
orte_rml_cnos_recv(orte_process_name_t * peer,
struct iovec *msg,
int count, orte_rml_tag_t tag, int flags)
{
return ORTE_ERR_NOT_SUPPORTED;
}
int
orte_rml_cnos_recv_buffer(orte_process_name_t * peer,
orte_buffer_t * buf, orte_rml_tag_t tag)
{
return ORTE_ERR_NOT_SUPPORTED;
}
int
orte_rml_cnos_send_nb(orte_process_name_t * peer,
struct iovec *msg,
int count,
orte_rml_tag_t tag,
int flags, orte_rml_callback_fn_t cbfunc, void *cbdata)
{
return ORTE_SUCCESS;
}
int
orte_rml_cnos_send_buffer_nb(orte_process_name_t * peer,
orte_buffer_t * buffer,
orte_rml_tag_t tag,
int flags,
orte_rml_buffer_callback_fn_t
cbfunc, void *cbdata)
{
return ORTE_SUCCESS;
}
int
orte_rml_cnos_recv_nb(orte_process_name_t * peer,
struct iovec *msg,
int count,
orte_rml_tag_t tag,
int flags, orte_rml_callback_fn_t cbfunc, void *cbdata)
{
return ORTE_SUCCESS;
}
int
orte_rml_cnos_recv_buffer_nb(orte_process_name_t * peer,
orte_rml_tag_t tag,
int flags,
orte_rml_buffer_callback_fn_t
cbfunc, void *cbdata)
{
return ORTE_SUCCESS;
}
int
orte_rml_cnos_recv_cancel(orte_process_name_t * peer, orte_rml_tag_t tag)
{
return ORTE_ERR_NOT_SUPPORTED;
}
int
orte_rml_cnos_barrier(void)
{
cnos_barrier();
return ORTE_SUCCESS;
}
int
orte_rml_cnos_xcast(orte_process_name_t * root,
orte_process_name_t * peers,
size_t num_peers,
orte_buffer_t * buffer,
orte_rml_buffer_callback_fn_t cbfunc)
{
if (NULL != root || NULL != peers || 0 != num_peers ||
NULL != buffer || NULL != cbfunc) {
return ORTE_ERR_NOT_SUPPORTED;
}
return orte_rml_cnos_barrier();
}

102
orte/mca/rml/cnos/rml_cnos.h Обычный файл
Просмотреть файл

@ -0,0 +1,102 @@
/*
* 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 (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
/**
* @file
*/
#ifndef MCA_RML_CNOS_H
#define MCA_RML_CNOS_H
#include "mca/rml/rml.h"
#if defined(c_plusplus) || defined(__cplusplus)
extern "C"
{
#endif
OMPI_COMP_EXPORT extern orte_rml_component_t mca_rml_cnos_component;
int orte_rml_cnos_open(void);
int orte_rml_cnos_close(void);
orte_rml_module_t * orte_rml_cnos_init(int *priority);
int orte_rml_cnos_module_init(void);
int orte_rml_cnos_module_fini(void);
char *orte_rml_cnos_get_uri(void);
int orte_rml_cnos_set_uri(const char *);
int orte_rml_cnos_parse_uris(const char *uri,
orte_process_name_t * peer, char ***uris);
int orte_rml_cnos_ping(const char *uri, const struct timeval *tv);
int orte_rml_cnos_send(orte_process_name_t * peer,
struct iovec *msg,
int count, int tag, int flags);
int orte_rml_cnos_send_buffer(orte_process_name_t * peer,
orte_buffer_t * buffer,
orte_rml_tag_t tag, int flags);
int orte_rml_cnos_send_nb(orte_process_name_t * peer,
struct iovec *msg,
int count,
orte_rml_tag_t tag,
int flags,
orte_rml_callback_fn_t cbfunc, void *cbdata);
int orte_rml_cnos_send_buffer_nb(orte_process_name_t * peer,
orte_buffer_t * buffer,
orte_rml_tag_t tag,
int flags,
orte_rml_buffer_callback_fn_t cbfunc,
void *cbdata);
int orte_rml_cnos_recv(orte_process_name_t * peer,
struct iovec *msg,
int count, orte_rml_tag_t tag, int flags);
int orte_rml_cnos_recv_buffer(orte_process_name_t * peer,
orte_buffer_t * buf, orte_rml_tag_t tag);
int orte_rml_cnos_recv_nb(orte_process_name_t * peer,
struct iovec *msg,
int count,
orte_rml_tag_t tag,
int flags,
orte_rml_callback_fn_t cbfunc, void *cbdata);
int orte_rml_cnos_recv_buffer_nb(orte_process_name_t * peer,
orte_rml_tag_t tag,
int flags,
orte_rml_buffer_callback_fn_t cbfunc,
void *cbdata);
int orte_rml_cnos_recv_cancel(orte_process_name_t * peer,
orte_rml_tag_t tag);
int orte_rml_cnos_barrier(void);
int orte_rml_cnos_xcast(orte_process_name_t * root,
orte_process_name_t * peers,
size_t num_peers,
orte_buffer_t * buffer,
orte_rml_buffer_callback_fn_t cbfunc);
#if defined(c_plusplus) || defined(__cplusplus)
}
#endif
#endif