1
1

Merge pull request #5200 from jsquyres/pr/disable-osc-pt2pt-for-thread-multiple

osc/pt2pt: disable when THREAD_MULITPLE
Этот коммит содержится в:
Jeff Squyres 2018-05-29 15:33:15 -04:00 коммит произвёл GitHub
родитель 4ebed21b6d 5b7c866f59
Коммит 2e8ab41ba5
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 32 добавлений и 0 удалений

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

@ -19,6 +19,8 @@
# $HEADER$ # $HEADER$
# #
dist_ompidata_DATA = help-osc-pt2pt.txt
pt2pt_sources = \ pt2pt_sources = \
osc_pt2pt.h \ osc_pt2pt.h \
osc_pt2pt_module.c \ osc_pt2pt_module.c \

15
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.

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

@ -25,6 +25,7 @@
*/ */
#include "ompi_config.h" #include "ompi_config.h"
#include "opal/util/show_help.h"
#include <string.h> #include <string.h>
@ -108,6 +109,7 @@ ompi_osc_pt2pt_module_t ompi_osc_pt2pt_module_template = {
}; };
bool ompi_osc_pt2pt_no_locks = false; bool ompi_osc_pt2pt_no_locks = false;
static bool using_thread_multiple = false;
/* look up parameters for configuring this window. The code first /* look up parameters for configuring this window. The code first
looks in the info structure passed by the user, then through mca looks in the info structure passed by the user, then through mca
@ -206,6 +208,10 @@ component_init(bool enable_progress_threads,
{ {
int ret; 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.lock, opal_mutex_t);
OBJ_CONSTRUCT(&mca_osc_pt2pt_component.pending_operations, opal_list_t); OBJ_CONSTRUCT(&mca_osc_pt2pt_component.pending_operations, opal_list_t);
OBJ_CONSTRUCT(&mca_osc_pt2pt_component.pending_operations_lock, opal_mutex_t); OBJ_CONSTRUCT(&mca_osc_pt2pt_component.pending_operations_lock, opal_mutex_t);
@ -302,6 +308,15 @@ component_select(struct ompi_win_t *win, void **base, size_t size, int disp_unit
component */ component */
if (MPI_WIN_FLAVOR_SHARED == flavor) return OMPI_ERR_NOT_SUPPORTED; 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 */ /* create module structure with all fields initialized to zero */
module = (ompi_osc_pt2pt_module_t*) module = (ompi_osc_pt2pt_module_t*)
calloc(1, sizeof(ompi_osc_pt2pt_module_t)); calloc(1, sizeof(ompi_osc_pt2pt_module_t));