diff --git a/ompi/mca/osc/pt2pt/Makefile.am b/ompi/mca/osc/pt2pt/Makefile.am index 17d08ff50e1..c3979c1f2fe 100644 --- a/ompi/mca/osc/pt2pt/Makefile.am +++ b/ompi/mca/osc/pt2pt/Makefile.am @@ -18,6 +18,8 @@ # $HEADER$ # +dist_ompidata_DATA = help-osc-pt2pt.txt + pt2pt_sources = \ osc_pt2pt.h \ osc_pt2pt_module.c \ diff --git a/ompi/mca/osc/pt2pt/help-osc-pt2pt.txt b/ompi/mca/osc/pt2pt/help-osc-pt2pt.txt new file mode 100644 index 00000000000..9b57ac20b72 --- /dev/null +++ b/ompi/mca/osc/pt2pt/help-osc-pt2pt.txt @@ -0,0 +1,15 @@ +# -*- text -*- +# +# Copyright (c) 2016 Los Alamos National Security, LLC. All rights +# reserved. +# +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# +[mpi-thread-multiple-not-supported] +The OSC pt2pt component does not support MPI_THREAD_MULTIPLE in this release. +Workarounds are to run on a single node, or to use a system with an RDMA +capable network such as Infiniband. diff --git a/ompi/mca/osc/pt2pt/osc_pt2pt_component.c b/ompi/mca/osc/pt2pt/osc_pt2pt_component.c index e41a8306b7d..e9947272a4d 100644 --- a/ompi/mca/osc/pt2pt/osc_pt2pt_component.c +++ b/ompi/mca/osc/pt2pt/osc_pt2pt_component.c @@ -24,6 +24,7 @@ */ #include "ompi_config.h" +#include "opal/util/show_help.h" #include @@ -110,6 +111,7 @@ ompi_osc_pt2pt_module_t ompi_osc_pt2pt_module_template = { }; bool ompi_osc_pt2pt_no_locks = false; +static bool using_thread_multiple = false; /* look up parameters for configuring this window. The code first looks in the info structure passed by the user, then through mca @@ -208,6 +210,10 @@ component_init(bool enable_progress_threads, { int ret; + if (enable_mpi_threads) { + using_thread_multiple = true; + } + OBJ_CONSTRUCT(&mca_osc_pt2pt_component.lock, opal_mutex_t); OBJ_CONSTRUCT(&mca_osc_pt2pt_component.pending_operations, opal_list_t); OBJ_CONSTRUCT(&mca_osc_pt2pt_component.pending_operations_lock, opal_mutex_t); @@ -304,6 +310,15 @@ component_select(struct ompi_win_t *win, void **base, size_t size, int disp_unit component */ if (MPI_WIN_FLAVOR_SHARED == flavor) return OMPI_ERR_NOT_SUPPORTED; + /* + * workaround for issue https://github.com/open-mpi/ompi/issues/2614 + * The following check needs to be removed once 2614 is addressed. + */ + if (using_thread_multiple) { + opal_show_help("help-osc-pt2pt.txt", "mpi-thread-multiple-not-supported", true); + return OMPI_ERR_NOT_SUPPORTED; + } + /* create module structure with all fields initialized to zero */ module = (ompi_osc_pt2pt_module_t*) calloc(1, sizeof(ompi_osc_pt2pt_module_t));