1
1

* Provide flag if the BTL can do RDMA, but requires a prepare_{src,dst}

that exactly describes the buffer to be used as the target of the
    operation
  * Use the above flag to disable components setting the flag from being
    used for real RDMA operations for the one-sided component (the
    BTLs will still be used for RDMA transfers for the PML and for
    send/receive communication for the OSC component) 

This commit was SVN r15375.
Этот коммит содержится в:
Brian Barrett 2007-07-11 21:21:40 +00:00
родитель 739fed9dc9
Коммит 1f2942cf2a
4 изменённых файлов: 30 добавлений и 12 удалений

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

@ -145,23 +145,27 @@ typedef uint8_t mca_btl_base_tag_t;
#define MCA_BTL_TAG_MAX 255 /* 1 + highest allowed tag num */
/* prefered protocol */
#define MCA_BTL_FLAGS_SEND 0x1
#define MCA_BTL_FLAGS_PUT 0x2
#define MCA_BTL_FLAGS_GET 0x4
#define MCA_BTL_FLAGS_SEND 0x0001
#define MCA_BTL_FLAGS_PUT 0x0002
#define MCA_BTL_FLAGS_GET 0x0004
#define MCA_BTL_FLAGS_RDMA (MCA_BTL_FLAGS_GET|MCA_BTL_FLAGS_PUT)
/* btl can send directly from user buffer w/out registration */
#define MCA_BTL_FLAGS_SEND_INPLACE 0x8
#define MCA_BTL_FLAGS_SEND_INPLACE 0x0008
/* btl transport is reliable */
#define MCA_BTL_FLAGS_NEED_ACK 0x10
#define MCA_BTL_FLAGS_NEED_CSUM 0x20
#define MCA_BTL_FLAGS_NEED_ACK 0x0010
#define MCA_BTL_FLAGS_NEED_CSUM 0x0020
/** RDMA put/get calls must have a matching prepare_{src,dst} call
on the target with the same base (and possibly bound). */
#define MCA_BTL_FLAGS_RDMA_MATCHED 0x0040
/* btl needs local rdma completion */
#define MCA_BTL_FLAGS_RDMA_COMPLETION 0x80
#define MCA_BTL_FLAGS_RDMA_COMPLETION 0x0080
/* Default exclusivity levels */
#define MCA_BTL_EXCLUSIVITY_HIGH 64*1024 /* internal loopback */
#define MCA_BTL_EXCLUSIVITY_HIGH (64*1024) /* internal loopback */
#define MCA_BTL_EXCLUSIVITY_DEFAULT 1024 /* GM/IB/etc. */
#define MCA_BTL_EXCLUSIVITY_LOW 0 /* TCP used as a last resort */

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

@ -149,7 +149,11 @@ int mca_btl_mx_component_open(void)
mca_btl_mx_module.super.btl_rdma_pipeline_send_length = 256*1024;
mca_btl_mx_module.super.btl_rdma_pipeline_frag_size = 8*1024*1024;
mca_btl_mx_module.super.btl_min_rdma_pipeline_size = 0;
mca_btl_mx_module.super.btl_flags = MCA_BTL_FLAGS_SEND_INPLACE | MCA_BTL_FLAGS_PUT | MCA_BTL_FLAGS_SEND;
mca_btl_mx_module.super.btl_flags =
MCA_BTL_FLAGS_SEND_INPLACE |
MCA_BTL_FLAGS_PUT |
MCA_BTL_FLAGS_SEND |
MCA_BTL_FLAGS_RDMA_MATCHED;
mca_btl_mx_module.super.btl_bandwidth = 2000;
mca_btl_mx_module.super.btl_latency = 5;
mca_btl_base_param_register(&mca_btl_mx_component.super.btl_version,

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

@ -135,7 +135,9 @@ mca_btl_portals_component_open(void)
mca_btl_portals_module.super.btl_rdma_pipeline_send_length = 64 * 1024;
mca_btl_portals_module.super.btl_rdma_pipeline_frag_size = INT_MAX;
mca_btl_portals_module.super.btl_min_rdma_pipeline_size = 0;
mca_btl_portals_module.super.btl_flags = MCA_BTL_FLAGS_RDMA;
mca_btl_portals_module.super.btl_flags =
MCA_BTL_FLAGS_RDMA |
MCA_BTL_FLAGS_RDMA_MATCHED;
mca_btl_portals_module.super.btl_bandwidth = 1000;
mca_btl_portals_module.super.btl_latency = 0;

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

@ -876,6 +876,13 @@ component_fragment_cb(struct mca_btl_base_module_t *btl,
"received rdma info for unknown btl from rank %d",
origin);
return;
} else {
OPAL_OUTPUT_VERBOSE((1, ompi_osc_base_output,
"received rdma info from rank %d for BTL %s",
origin,
bml_btl->btl->
btl_component->btl_version.
mca_component_name));
}
OPAL_THREAD_LOCK(&module->m_lock);
@ -1089,8 +1096,9 @@ rdma_send_info_send(ompi_osc_rdma_module_t *module,
static bool
is_valid_rdma(mca_bml_base_btl_t *bml_btl)
{
if (((bml_btl->btl_flags & MCA_BTL_FLAGS_PUT) != 0) &&
((bml_btl->btl_flags & MCA_BTL_FLAGS_GET) != 0)) {
if ((bml_btl->btl->btl_put != NULL) &&
(bml_btl->btl->btl_get != NULL) &&
((bml_btl->btl_flags & MCA_BTL_FLAGS_RDMA_MATCHED) == 0)) {
return true;
}