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[.+,]* # --enable-mca-dso=[.+,]*COMPONENT_TYPE-COMPONENT_NAME[.+,]*
# --disable-mca-dso # --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_ARG_ENABLE(mca-dso,
AC_HELP_STRING([--enable-mca-dso=LIST], AC_HELP_STRING([--enable-mca-dso=LIST],
[comma-separated list of types and/or [comma-separated list of types and/or
@ -44,9 +48,7 @@ AC_DEFUN([OMPI_MCA],[
run-time loadable components (as opposed to run-time loadable components (as opposed to
statically linked in), if supported on this statically linked in), if supported on this
platform. The default is to build all components platform. The default is to build all components
as DSOs; the --disable-mca-dso[=LIST] form can be as DSOs]))
used to disable building all or some
types/components as DSOs]))
AC_ARG_ENABLE(mca-static, AC_ARG_ENABLE(mca-static,
AC_HELP_STRING([--enable-mca-static=LIST], AC_HELP_STRING([--enable-mca-static=LIST],
[comma-separated list of types and/or [comma-separated list of types and/or
@ -64,6 +66,32 @@ AC_DEFUN([OMPI_MCA],[
not be empty and implies given component pairs are not be empty and implies given component pairs are
build as static components.])) 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 # First, add all the mca-direct components / types into the mca-static
# lists and create a list of component types that are direct compile, # lists and create a list of component types that are direct compile,
@ -791,6 +819,7 @@ AC_DEFUN([MCA_COMPONENT_BUILD_CHECK],[
framework=$2 framework=$2
component=$3 component=$3
component_path="$srcdir/$project/mca/$framework/$component" component_path="$srcdir/$project/mca/$framework/$component"
want_component=0
# build if: # build if:
# - the component type is direct and we are that component # - the component type is direct and we are that component
@ -828,9 +857,16 @@ AC_DEFUN([MCA_COMPONENT_BUILD_CHECK],[
want_component=0 want_component=0
fi fi
fi fi
AS_IF([test "$want_component" = "1"], [$4], [$5])
fi 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 # vscanf
AC_CHECK_LIB([util], [openpty], [WRAPPER_EXTRA_LIBS="$WRAPPER_EXTRA_LIBS -lutil" LIBLAM_EXTRA_LIBS="$LIBLAMEXTRALIBS -lutil" LIBS="$LIBS -lutil]") 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) # 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]) [MSG=yes],[MSG=not_found])
if test "$MSG" = "not_found"; then if test "$MSG" = "not_found"; then
LIBS="$LIBS_save" LIBS="$LIBS_save"
AC_MSG_RESULT([cannot find sched_yield])
AC_MSG_ERROR([Cannot continue])
fi fi
fi fi
AC_MSG_RESULT([$MSG]) 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 # 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], [ AC_DEFUN([MCA_btl_portals_CONFIG_VALS], [
# User configuration options # User configuration options
MCA_btl_portals_CONFIG_VAL([send-table-id], 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 ]) [Portals table id to use for send/recv ])
MCA_btl_portals_CONFIG_VAL([rdma-table-id], 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]) [Portals table id to use for RDMA request])
MCA_btl_portals_CONFIG_VAL([debug-level], MCA_btl_portals_CONFIG_VAL([debug-level],

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

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

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

@ -22,6 +22,13 @@
#include "btl_portals.h" #include "btl_portals.h"
#include "btl_portals_compat.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 int
mca_btl_portals_init_compat(mca_btl_portals_component_t *comp) 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_limits), /* save our limits somewhere */
&(btl->portals_ni_h) /* our interface handle */ &(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, opal_output_verbose(10, mca_btl_portals_component.portals_output,
"PtlNIInit failed, returning %d\n", ret); "PtlNIInit failed, returning %d\n", ret);
return OMPI_ERR_FATAL; 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; 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) ptl_process_id_t **portals_procs)
{ {
int nptl_procs = 0; int nptl_procs = 0;
cnos_nidpid_map_t *map;
int i;
/* /*
* FIXME - XXX - FIXME * 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... * 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) { if (nptl_procs <= 0) {
opal_output_verbose(10, mca_btl_portals_component.portals_output, opal_output_verbose(10, mca_btl_portals_component.portals_output,
"cnos_get_nidpid_map() returned %d", nptl_procs); "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_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 #endif
while (true) { while (true) {
opal_output_verbose(30, mca_btl_portals_component.portals_output,
"PtlEQPoll about to be called");
ret = PtlEQPoll(module->portals_eq_handles, ret = PtlEQPoll(module->portals_eq_handles,
OMPI_BTL_PORTALS_EQ_SIZE, /* number of eq handles */ OMPI_BTL_PORTALS_EQ_SIZE, /* number of eq handles */
0, /* poll time */ 1, /* poll time */
&ev, &ev,
&which); &which);
opal_output_verbose(30, mca_btl_portals_component.portals_output,
"PtlEQPoll returned %d\n", ret);
if (PTL_EQ_EMPTY == ret) { if (PTL_EQ_EMPTY == ret) {
/* nothing to see here - move along */ /* nothing to see here - move along */
mca_btl_portals_progress_queued_sends(module); mca_btl_portals_progress_queued_sends(module);
@ -380,10 +384,16 @@ mca_btl_portals_component_progress(void)
switch (which) { switch (which) {
case OMPI_BTL_PORTALS_EQ_RECV: 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_progress_queued_sends(module);
mca_btl_portals_process_recv(module, &ev); mca_btl_portals_process_recv(module, &ev);
break; break;
case OMPI_BTL_PORTALS_EQ_SEND: 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); mca_btl_portals_process_send(module, &ev);
break; break;
case OMPI_BTL_PORTALS_EQ_RDMA: 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.user_ptr = NULL;
md.eq_handle = PTL_EQ_NONE; 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, ret = PtlMEAttach(btl->portals_ni_h,
OMPI_BTL_PORTALS_SEND_TABLE_ID, OMPI_BTL_PORTALS_SEND_TABLE_ID,
any_proc, any_proc,
0, /* match */ 0, /* match */
0, /* ignore */ 0, /* ignore */
PTL_RETAIN, PTL_RETAIN,
PTL_INS_AFTER, PTL_INS_BEFORE,
&(btl->portals_recv_reject_me_h)); &(btl->portals_recv_reject_me_h));
if (PTL_OK != ret) { if (PTL_OK != ret) {
opal_output(mca_btl_portals_component.portals_output, opal_output(mca_btl_portals_component.portals_output,

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

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

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

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

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

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