1
1

use the btls min rdma size as the cutoff (rdma offset) for the send protocol

This commit was SVN r6372.
Этот коммит содержится в:
Tim Woodall 2005-07-07 22:08:56 +00:00
родитель a231d53666
Коммит 11f1f067c2
6 изменённых файлов: 8 добавлений и 6 удалений

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

@ -363,9 +363,12 @@ int mca_pml_ob1_add_procs(ompi_proc_t** procs, size_t nprocs)
/* check flags - is rdma prefered */ /* check flags - is rdma prefered */
if(endpoint->btl->btl_flags & MCA_BTL_FLAGS_RDMA && if(endpoint->btl->btl_flags & MCA_BTL_FLAGS_RDMA &&
proc->proc_arch == ompi_proc_local_proc->proc_arch) { proc->proc_arch == ompi_proc_local_proc->proc_arch) {
mca_pml_ob1_endpoint_t* rdma_ep = mca_pml_ob1_ep_array_insert(&proc_pml->btl_rdma); mca_pml_ob1_endpoint_t* rdma_ep = mca_pml_ob1_ep_array_insert(&proc_pml->btl_rdma);
*rdma_ep = *endpoint; *rdma_ep = *endpoint;
if(proc_pml->proc_rdma_offset < rdma_ep->btl_min_rdma_size) {
proc_pml->proc_rdma_offset = rdma_ep->btl_min_rdma_size;
}
} }
} }
} }

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

@ -57,7 +57,6 @@ struct mca_pml_ob1_t {
int free_list_max; /* maximum size of free list */ int free_list_max; /* maximum size of free list */
int free_list_inc; /* number of elements to grow free list */ int free_list_inc; /* number of elements to grow free list */
size_t eager_limit; /* maximum eager limit size - overrides btl setting */ size_t eager_limit; /* maximum eager limit size - overrides btl setting */
size_t rdma_offset; /* offset at which we attempt to initiate rdma */
size_t send_pipeline_depth; size_t send_pipeline_depth;
size_t recv_pipeline_depth; size_t recv_pipeline_depth;
bool leave_pinned; bool leave_pinned;

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

@ -115,8 +115,6 @@ int mca_pml_ob1_component_open(void)
mca_pml_ob1_param_register_int("send_pipeline_depth", 3); mca_pml_ob1_param_register_int("send_pipeline_depth", 3);
mca_pml_ob1.recv_pipeline_depth = mca_pml_ob1.recv_pipeline_depth =
mca_pml_ob1_param_register_int("recv_pipeline_depth", 5); mca_pml_ob1_param_register_int("recv_pipeline_depth", 5);
mca_pml_ob1.rdma_offset =
mca_pml_ob1_param_register_int("rdma_offset", 512*1024);
mca_base_param_register_int("mpi", NULL, "leave_pinned", "leave_pinned", 0); mca_base_param_register_int("mpi", NULL, "leave_pinned", "leave_pinned", 0);
param = mca_base_param_find("mpi", NULL, "leave_pinned"); param = mca_base_param_find("mpi", NULL, "leave_pinned");

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

@ -25,6 +25,7 @@ static void mca_pml_ob1_proc_construct(mca_pml_ob1_proc_t* proc)
{ {
proc->proc_ompi = NULL; proc->proc_ompi = NULL;
proc->proc_sequence = 0; proc->proc_sequence = 0;
proc->proc_rdma_offset = 0;
OBJ_CONSTRUCT(&proc->proc_lock, opal_mutex_t); OBJ_CONSTRUCT(&proc->proc_lock, opal_mutex_t);
OBJ_CONSTRUCT(&proc->btl_eager, mca_pml_ob1_ep_array_t); OBJ_CONSTRUCT(&proc->btl_eager, mca_pml_ob1_ep_array_t);
OBJ_CONSTRUCT(&proc->btl_send, mca_pml_ob1_ep_array_t); OBJ_CONSTRUCT(&proc->btl_send, mca_pml_ob1_ep_array_t);

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

@ -41,6 +41,7 @@ struct mca_pml_proc_t {
mca_pml_ob1_ep_array_t btl_eager; /**< array of endpoints to use for first fragments */ mca_pml_ob1_ep_array_t btl_eager; /**< array of endpoints to use for first fragments */
mca_pml_ob1_ep_array_t btl_send; /**< array of endpoints to use for remaining fragments */ mca_pml_ob1_ep_array_t btl_send; /**< array of endpoints to use for remaining fragments */
mca_pml_ob1_ep_array_t btl_rdma; /**< array of endpoints that support (prefer) rdma */ mca_pml_ob1_ep_array_t btl_rdma; /**< array of endpoints that support (prefer) rdma */
size_t proc_rdma_offset; /**< max of min rdma size for available rmda btls */
}; };
typedef struct mca_pml_proc_t mca_pml_ob1_proc_t; typedef struct mca_pml_proc_t mca_pml_ob1_proc_t;

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

@ -165,12 +165,12 @@ static void mca_pml_ob1_recv_request_ack(
* - rdma devices are available * - rdma devices are available
*/ */
if(NULL == recvreq->req_mpool && !mca_pml_ob1.leave_pinned) { if(NULL == recvreq->req_mpool && !mca_pml_ob1.leave_pinned) {
if(recvreq->req_recv.req_bytes_packed > mca_pml_ob1.rdma_offset && if(recvreq->req_recv.req_bytes_packed > proc->proc_rdma_offset &&
mca_pml_ob1_ep_array_get_size(&proc->btl_rdma) && mca_pml_ob1_ep_array_get_size(&proc->btl_rdma) &&
ompi_convertor_need_buffers(&recvreq->req_recv.req_convertor) == 0) { ompi_convertor_need_buffers(&recvreq->req_recv.req_convertor) == 0) {
/* use convertor to figure out the rdma offset for this request */ /* use convertor to figure out the rdma offset for this request */
recvreq->req_rdma_offset = mca_pml_ob1.rdma_offset; recvreq->req_rdma_offset = proc->proc_rdma_offset;
ompi_convertor_set_position( ompi_convertor_set_position(
&recvreq->req_recv.req_convertor, &recvreq->req_recv.req_convertor,
&recvreq->req_rdma_offset); &recvreq->req_rdma_offset);