diff --git a/oshmem/mca/spml/base/spml_base_select.c b/oshmem/mca/spml/base/spml_base_select.c index 270c6e5d5a..c3be1a2df4 100644 --- a/oshmem/mca/spml/base/spml_base_select.c +++ b/oshmem/mca/spml/base/spml_base_select.c @@ -27,6 +27,8 @@ #include "oshmem/mca/spml/spml.h" #include "oshmem/mca/spml/base/base.h" +#include "ompi/mca/bml/base/base.h" + typedef struct opened_component_t { opal_list_item_t super; @@ -147,7 +149,12 @@ int mca_spml_base_select(bool enable_progress_threads, bool enable_mpi_threads) if (NULL == tmp_val) { continue; } - orte_errmgr.abort(1, "SPML %s cannot be selected", tmp_val); + if (0 == strncmp(tmp_val, "yoda", 4) && !mca_bml_base_inited()) { + orte_errmgr.abort(1, "SPML %s cannot be selected becasue no btls are available. Please make sure that ob1 pml is selected by ompi (-mca pml ob1)", tmp_val); + } + else { + orte_errmgr.abort(1, "SPML %s cannot be selected", tmp_val); + } } if (0 == i) { orte_errmgr.abort(2, diff --git a/oshmem/mca/spml/yoda/spml_yoda.h b/oshmem/mca/spml/yoda/spml_yoda.h index a15469aa11..13ed7d62d8 100644 --- a/oshmem/mca/spml/yoda/spml_yoda.h +++ b/oshmem/mca/spml/yoda/spml_yoda.h @@ -74,7 +74,6 @@ struct mca_spml_yoda_t { /* number of outstanding put requests */ int32_t n_active_puts; bool enabled; - bool force_bml; struct yoda_btl *btl_type_map; int n_btls; }; diff --git a/oshmem/mca/spml/yoda/spml_yoda_component.c b/oshmem/mca/spml/yoda/spml_yoda_component.c index b3080ce1dd..e95027b176 100644 --- a/oshmem/mca/spml/yoda/spml_yoda_component.c +++ b/oshmem/mca/spml/yoda/spml_yoda_component.c @@ -112,15 +112,9 @@ mca_spml_yoda_component_init(int* priority, } /* We use BML/BTL and need to start it */ - mca_spml_yoda.force_bml = false; if (!mca_bml_base_inited()) { - SPML_VERBOSE(10, "starting bml\n"); - if (OMPI_SUCCESS - != mca_bml_base_init(enable_progress_threads, - enable_mpi_threads)) { - return NULL ; - } - mca_spml_yoda.force_bml = true; + SPML_VERBOSE(10, "can not select yoda because ompi has no bml component"); + return NULL; } mca_spml_yoda.n_active_puts = 0; @@ -132,11 +126,6 @@ int mca_spml_yoda_component_fini(void) { int rc; - /* Shutdown BML */ - if ((mca_spml_yoda.force_bml == true) && - (OMPI_SUCCESS != (rc = mca_bml.bml_finalize()))) - return rc; - if(!mca_spml_yoda.enabled) return OSHMEM_SUCCESS; /* never selected.. return success.. */ mca_spml_yoda.enabled = false; /* not anymore */