From 740b636dbe52ea14187327e9e3f012f8ec68a82d Mon Sep 17 00:00:00 2001 From: Potnuri Bharat Teja Date: Tue, 12 Jul 2016 18:35:14 +0530 Subject: [PATCH] btl/openib: Disqualify rdmacm CPC if MPI_THREAD_MULTIPLE The rdmacm CPC in the openib BTL is not thread safe. The rdmacm CPC should disqualify itself (instead of failing in random ways) if MPI_THREAD_MULTIPLE is the thread level. Signed-off-by: Potnuri Bharat Teja --- .../btl/openib/connect/btl_openib_connect_rdmacm.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/opal/mca/btl/openib/connect/btl_openib_connect_rdmacm.c b/opal/mca/btl/openib/connect/btl_openib_connect_rdmacm.c index 46811aae11..6d98dfcecf 100644 --- a/opal/mca/btl/openib/connect/btl_openib_connect_rdmacm.c +++ b/opal/mca/btl/openib/connect/btl_openib_connect_rdmacm.c @@ -63,6 +63,8 @@ #include "btl_openib_ip.h" #include "btl_openib_ini.h" +#include "ompi/runtime/mpiruntime.h" + #if BTL_OPENIB_RDMACM_IB_ADDR #include #include @@ -2000,6 +2002,15 @@ static int rdmacm_component_query(mca_btl_openib_module_t *openib_btl, opal_btl_ struct sockaddr_in sin; #endif + /* RDMACM is not supported for MPI_THREAD_MULTIPLE */ + if (opal_using_threads()) { + BTL_VERBOSE(("rdmacm CPC is not supported with MPI_THREAD_MULTIPLE; skipped on %s:%d", + ibv_get_device_name(openib_btl->device->ib_dev), + openib_btl->port_num)); + rc = OPAL_ERR_NOT_SUPPORTED; + goto out; + } + /* RDMACM is not supported if we have any XRC QPs */ if (mca_btl_openib_component.num_xrc_qps > 0) { BTL_VERBOSE(("rdmacm CPC not supported with XRC receive queues, please try xoob CPC; skipped on %s:%d",