From a4c1faae37bf1d4e9746bc863de93f53dd04887c Mon Sep 17 00:00:00 2001 From: Yohann Burette Date: Tue, 20 Jan 2015 15:37:02 -0800 Subject: [PATCH] mtl/ofi: Add OFI provider option. The user can now specify which OFI provider to use with the MTL. e.g. --mca mtl ofi --mca mtl_ofi_provider psm --- ompi/mca/mtl/ofi/mtl_ofi_component.c | 12 ++++++++++++ ompi/mca/mtl/ofi/mtl_ofi_types.h | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/ompi/mca/mtl/ofi/mtl_ofi_component.c b/ompi/mca/mtl/ofi/mtl_ofi_component.c index f557291b38..c71f88a804 100644 --- a/ompi/mca/mtl/ofi/mtl_ofi_component.c +++ b/ompi/mca/mtl/ofi/mtl_ofi_component.c @@ -59,6 +59,15 @@ mca_mtl_ofi_component_t mca_mtl_ofi_component = { static int ompi_mtl_ofi_component_register(void) { + + ompi_mtl_ofi.provider_name = NULL; + (void) mca_base_component_var_register(&mca_mtl_ofi_component.super.mtl_version, + "provider", + "Name of OFI provider to use", + MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0, + OPAL_INFO_LVL_9, + MCA_BASE_VAR_SCOPE_READONLY, + &ompi_mtl_ofi.provider_name); return OMPI_SUCCESS; } @@ -102,6 +111,7 @@ ompi_mtl_ofi_component_init(bool enable_progress_threads, struct fi_info hints = {0}; struct fi_info *providers = NULL, *prov = NULL; struct fi_domain_attr domain_attr = {0}; + struct fi_fabric_attr fabric_attr = {0}; struct fi_cq_attr cq_attr = {0}; struct fi_av_attr av_attr = {0}; fi_addr_t ep_name = 0; @@ -134,7 +144,9 @@ ompi_mtl_ofi_component_init(bool enable_progress_threads, */ domain_attr.threading = FI_THREAD_ENDPOINT; domain_attr.control_progress = FI_PROGRESS_AUTO; + fabric_attr.prov_name = ompi_mtl_ofi.provider_name; hints.domain_attr = &domain_attr; + hints.fabric_attr = &fabric_attr; /** * FI_VERSION provides binary backward and forward compatibility support diff --git a/ompi/mca/mtl/ofi/mtl_ofi_types.h b/ompi/mca/mtl/ofi/mtl_ofi_types.h index 608af22eb5..1eab697c43 100644 --- a/ompi/mca/mtl/ofi/mtl_ofi_types.h +++ b/ompi/mca/mtl/ofi/mtl_ofi_types.h @@ -56,6 +56,10 @@ typedef struct mca_mtl_ofi_module_t { /** List of free messages for matched probe */ opal_free_list_t free_messages; + + /** Optional user-specified OFI provider name */ + char *provider_name; + } mca_mtl_ofi_module_t; extern mca_mtl_ofi_module_t ompi_mtl_ofi;