1
1

Merge pull request #4796 from hjelmn/btl_v3.1

opal/btl: add support for flushing RDMA/atomic operations
Этот коммит содержится в:
Nathan Hjelm 2018-02-15 12:44:18 -07:00 коммит произвёл GitHub
родитель dd24c746dc 072a6a4850
Коммит 9aa21f4467
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 38 добавлений и 9 удалений

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

@ -14,7 +14,7 @@
* Copyright (c) 2008-2013 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2015-2017 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016 Los Alamos National Security, LLC. All rights
* Copyright (c) 2016-2018 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$
*
@ -53,6 +53,7 @@ mca_base_var_enum_value_flag_t mca_btl_base_flag_enum_flags[] = {
{MCA_BTL_FLAGS_NEED_ACK, "need-ack", 0},
{MCA_BTL_FLAGS_NEED_CSUM, "need-csum", 0},
{MCA_BTL_FLAGS_HETEROGENEOUS_RDMA, "hetero-rdma", 0},
{MCA_BTL_FLAGS_RDMA_FLUSH, "rdma-flush", 0},
{0, NULL, 0}
};

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

@ -14,7 +14,7 @@
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
* Copyright (c) 2016 Los Alamos National Security, LLC. All rights
* Copyright (c) 2016-2018 Los Alamos National Security, LLC. All rights
* reserved.
*
* $COPYRIGHT$
@ -182,6 +182,10 @@ int mca_btl_base_param_verify(mca_btl_base_module_t *module)
module->btl_flags &= ~MCA_BTL_FLAGS_GET;
}
if (NULL == module->btl_flush) {
module->btl_flags &= ~MCA_BTL_FLAGS_RDMA_FLUSH;
}
if (0 == module->btl_atomic_flags) {
module->btl_flags &= ~MCA_BTL_FLAGS_ATOMIC_OPS;
}

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

@ -10,7 +10,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2006-2016 Los Alamos National Security, LLC. All rights
* Copyright (c) 2006-2018 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012-2013 NVIDIA Corporation. All rights reserved.
@ -244,6 +244,9 @@ typedef uint8_t mca_btl_base_tag_t;
/* The BTL is using progress thread and need the protection on matching */
#define MCA_BTL_FLAGS_BTL_PROGRESS_THREAD_ENABLED 0x40000
/* The BTL supports RMDA flush */
#define MCA_BTL_FLAGS_RDMA_FLUSH 0x80000
/* Default exclusivity levels */
#define MCA_BTL_EXCLUSIVITY_HIGH (64*1024) /* internal loopback */
#define MCA_BTL_EXCLUSIVITY_DEFAULT 1024 /* GM/IB/etc. */
@ -1164,6 +1167,20 @@ typedef void (*mca_btl_base_module_dump_fn_t)(
*/
typedef int (*mca_btl_base_module_ft_event_fn_t)(int state);
/**
* Flush all outstanding RDMA operations on an endpoint or all endpoints.
*
* @param btl (IN) BTL module
* @param endpoint (IN) Endpoint to flush (NULL == all)
*
* This function returns when all outstanding RDMA (put, get, atomic) operations
* that were started prior to the flush call have completed. This call does
* NOT guarantee that all BTL callbacks have been completed.
*
* The BTL is allowed to ignore the endpoint parameter and flush *all* endpoints.
*/
typedef int (*mca_btl_base_module_flush_fn_t) (struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint);
/**
* BTL module interface functions and attributes.
*/
@ -1231,23 +1248,30 @@ struct mca_btl_base_module_t {
#if OPAL_CUDA_SUPPORT
size_t btl_cuda_max_send_size; /**< set if CUDA max send_size is different from host max send size */
#endif /* OPAL_CUDA_SUPPORT */
mca_btl_base_module_flush_fn_t btl_flush; /**< flush all previous operations on an endpoint */
unsigned char padding[256]; /**< padding to future-proof the btl module */
};
typedef struct mca_btl_base_module_t mca_btl_base_module_t;
/*
* Macro for use in modules that are of type btl v3.0.0
* NOTE: This is not the final version of 3.0.0. Consider it
* alpha until this comment is removed.
* Macro for use in modules that are of type btl v3.1.0
*/
#define MCA_BTL_BASE_VERSION_3_0_0 \
OPAL_MCA_BASE_VERSION_2_1_0("btl", 3, 0, 0)
#define MCA_BTL_BASE_VERSION_3_1_0 \
OPAL_MCA_BASE_VERSION_2_1_0("btl", 3, 1, 0)
#define MCA_BTL_DEFAULT_VERSION(name) \
MCA_BTL_BASE_VERSION_3_0_0, \
MCA_BTL_BASE_VERSION_3_1_0, \
.mca_component_name = name, \
MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, \
OPAL_RELEASE_VERSION)
/**
* Convinience macro for detecting the BTL interface version.
*/
#define BTL_VERSION 310
END_C_DECLS
#endif /* OPAL_MCA_BTL_H */