diff --git a/config/ompi_mca.m4 b/config/ompi_mca.m4 index 5bf1bbfcb1..fae960508c 100644 --- a/config/ompi_mca.m4 +++ b/config/ompi_mca.m4 @@ -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]) ]) diff --git a/configure.ac b/configure.ac index ee778ea423..8dc3ae475d 100644 --- a/configure.ac +++ b/configure.ac @@ -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 # diff --git a/ompi/mca/btl/portals/configure.m4 b/ompi/mca/btl/portals/configure.m4 index 35d626f38c..5c674e979f 100644 --- a/ompi/mca/btl/portals/configure.m4 +++ b/ompi/mca/btl/portals/configure.m4 @@ -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], diff --git a/ompi/mca/btl/portals/src/btl_portals_compat.h b/ompi/mca/btl/portals/src/btl_portals_compat.h index 31d8b97668..1457799708 100644 --- a/ompi/mca/btl/portals/src/btl_portals_compat.h +++ b/ompi/mca/btl/portals/src/btl_portals_compat.h @@ -31,7 +31,7 @@ #include -#define PTL_EQ_HANDLER_NONE PTL_HANDLE_NONE +#define PTL_EQ_HANDLER_NONE NULL #else diff --git a/ompi/mca/btl/portals/src/btl_portals_compat_redstorm.c b/ompi/mca/btl/portals/src/btl_portals_compat_redstorm.c index e814a05385..84e7378344 100644 --- a/ompi/mca/btl/portals/src/btl_portals_compat_redstorm.c +++ b/ompi/mca/btl/portals/src/btl_portals_compat_redstorm.c @@ -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 +#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; } diff --git a/ompi/mca/btl/portals/src/btl_portals_component.c b/ompi/mca/btl/portals/src/btl_portals_component.c index e667338345..1199bede2e 100644 --- a/ompi/mca/btl/portals/src/btl_portals_component.c +++ b/ompi/mca/btl/portals/src/btl_portals_component.c @@ -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: diff --git a/ompi/mca/btl/portals/src/btl_portals_recv.c b/ompi/mca/btl/portals/src/btl_portals_recv.c index 7fa5af9c3e..57fd2b5055 100644 --- a/ompi/mca/btl/portals/src/btl_portals_recv.c +++ b/ompi/mca/btl/portals/src/btl_portals_recv.c @@ -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, diff --git a/ompi/mca/pml/ob1/pml_ob1.c b/ompi/mca/pml/ob1/pml_ob1.c index cb0fa1904d..c465529c20 100644 --- a/ompi/mca/pml/ob1/pml_ob1.c +++ b/ompi/mca/pml/ob1/pml_ob1.c @@ -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 */ diff --git a/ompi/mca/pml/ob1/pml_ob1_sendreq.c b/ompi/mca/pml/ob1/pml_ob1_sendreq.c index 8c2a2a02c6..00157810eb 100644 --- a/ompi/mca/pml/ob1/pml_ob1_sendreq.c +++ b/ompi/mca/pml/ob1/pml_ob1_sendreq.c @@ -699,7 +699,9 @@ void mca_pml_ob1_send_request_put( orte_errmgr.abort(); } } +#ifdef HAVE_SCHED_YIELD sched_yield(); +#endif } diff --git a/opal/runtime/opal_progress.c b/opal/runtime/opal_progress.c index 2a09316a82..d4796b87e8 100644 --- a/opal/runtime/opal_progress.c +++ b/opal/runtime/opal_progress.c @@ -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 diff --git a/orte/mca/gpr/null/Makefile.am b/orte/mca/gpr/null/Makefile.am new file mode 100644 index 0000000000..96c74421e7 --- /dev/null +++ b/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__.la (for DSO builds) or libmca__.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 diff --git a/orte/mca/gpr/null/configure.params b/orte/mca/gpr/null/configure.params new file mode 100644 index 0000000000..8d567e2b11 --- /dev/null +++ b/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" diff --git a/orte/mca/gpr/null/gpr_null.c b/orte/mca/gpr/null/gpr_null.c new file mode 100644 index 0000000000..7905683f03 --- /dev/null +++ b/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 +}; diff --git a/orte/mca/gpr/null/gpr_null_component.c b/orte/mca/gpr/null/gpr_null_component.c new file mode 100644 index 0000000000..027f7e2050 --- /dev/null +++ b/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 */ +}; diff --git a/orte/mca/rml/cnos/Makefile.am b/orte/mca/rml/cnos/Makefile.am new file mode 100644 index 0000000000..ba3b041a92 --- /dev/null +++ b/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__.la (for DSO builds) or libmca__.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 + diff --git a/orte/mca/rml/cnos/configure.m4 b/orte/mca/rml/cnos/configure.m4 new file mode 100644 index 0000000000..fb54bfdad7 --- /dev/null +++ b/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 diff --git a/orte/mca/rml/cnos/configure.params b/orte/mca/rml/cnos/configure.params new file mode 100644 index 0000000000..d7d760de24 --- /dev/null +++ b/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" diff --git a/orte/mca/rml/cnos/rml_cnos.c b/orte/mca/rml/cnos/rml_cnos.c new file mode 100644 index 0000000000..c25188009f --- /dev/null +++ b/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(); +} diff --git a/orte/mca/rml/cnos/rml_cnos.h b/orte/mca/rml/cnos/rml_cnos.h new file mode 100644 index 0000000000..ec554e8dfa --- /dev/null +++ b/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