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.
Этот коммит содержится в:
родитель
7d267e63a3
Коммит
6aa464b67e
@ -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
Обычный файл
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
Обычный файл
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
Обычный файл
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
Обычный файл
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
Обычный файл
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
Обычный файл
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
Обычный файл
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
Обычный файл
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
Обычный файл
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
|
Загрузка…
x
Ссылка в новой задаче
Block a user