1
1
This commit was SVN r6370.
Этот коммит содержится в:
Tim Woodall 2005-07-07 20:58:57 +00:00
родитель 5cdf0803d4
Коммит eabdb860bc
7 изменённых файлов: 22 добавлений и 10 удалений

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

@ -507,6 +507,7 @@ mca_btl_base_descriptor_t* mca_btl_gm_prepare_dst(
* insert the registration into the tree and bump the reference * insert the registration into the tree and bump the reference
* count so that it doesn't go away on completion. * count so that it doesn't go away on completion.
*/ */
OBJ_RETAIN(registration);
rc = mca_mpool_base_insert( rc = mca_mpool_base_insert(
frag->segment.seg_addr.pval, frag->segment.seg_addr.pval,
frag->segment.seg_len, frag->segment.seg_len,
@ -515,10 +516,11 @@ mca_btl_base_descriptor_t* mca_btl_gm_prepare_dst(
registration); registration);
if(rc != OMPI_SUCCESS) { if(rc != OMPI_SUCCESS) {
MCA_BTL_GM_FRAG_RETURN_USER(btl,frag); MCA_BTL_GM_FRAG_RETURN_USER(btl,frag);
/* release twice */
OBJ_RELEASE(registration);
OBJ_RELEASE(registration); OBJ_RELEASE(registration);
return NULL; return NULL;
} }
OBJ_RETAIN(registration);
} }
frag->registration = registration; frag->registration = registration;
} }

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

@ -68,9 +68,7 @@ struct mca_btl_gm_component_t {
opal_list_t gm_procs; /**< list of gm proc structures */ opal_list_t gm_procs; /**< list of gm proc structures */
opal_mutex_t gm_lock; /**< lock for accessing module state */ opal_mutex_t gm_lock; /**< lock for accessing module state */
char* gm_mpool_name; /**< name of memory pool */ char* gm_mpool_name; /**< name of memory pool */
bool leave_pinned; /**< pin memory on first use and leave pinned */
bool leave_pinned;
/**< pin memory on first use and leave pinned */
}; };
typedef struct mca_btl_gm_component_t mca_btl_gm_component_t; typedef struct mca_btl_gm_component_t mca_btl_gm_component_t;

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

@ -101,6 +101,8 @@ static inline int mca_btl_gm_param_register_int(
int mca_btl_gm_component_open(void) int mca_btl_gm_component_open(void)
{ {
int param, value;
/* initialize state */ /* initialize state */
mca_btl_gm_component.gm_num_btls=0; mca_btl_gm_component.gm_num_btls=0;
mca_btl_gm_component.gm_btls=NULL; mca_btl_gm_component.gm_btls=NULL;
@ -141,9 +143,9 @@ int mca_btl_gm_component_open(void)
mca_btl_gm_module.super.btl_max_send_size = mca_btl_gm_module.super.btl_max_send_size =
mca_btl_gm_param_register_int ("max_send_size", 64*1024); mca_btl_gm_param_register_int ("max_send_size", 64*1024);
mca_btl_gm_module.super.btl_min_rdma_size = mca_btl_gm_module.super.btl_min_rdma_size =
mca_btl_gm_param_register_int("min_rdma_size", 1024*1024); mca_btl_gm_param_register_int("min_rdma_size", 256*1024);
mca_btl_gm_module.super.btl_max_rdma_size = mca_btl_gm_module.super.btl_max_rdma_size =
mca_btl_gm_param_register_int("max_rdma_size", 1024*1024); mca_btl_gm_param_register_int("max_rdma_size", 256*1024);
#if OMPI_MCA_BTL_GM_SUPPORT_REGISTERING && OMPI_MCA_BTL_GM_HAVE_RDMA_PUT #if OMPI_MCA_BTL_GM_SUPPORT_REGISTERING && OMPI_MCA_BTL_GM_HAVE_RDMA_PUT
mca_btl_gm_module.super.btl_flags = mca_btl_gm_module.super.btl_flags =
mca_btl_gm_param_register_int("flags", MCA_BTL_FLAGS_RDMA); mca_btl_gm_param_register_int("flags", MCA_BTL_FLAGS_RDMA);
@ -164,6 +166,12 @@ int mca_btl_gm_component_open(void)
mca_btl_gm_module.super.btl_max_send_size = mca_btl_gm_module.super.btl_max_send_size =
gm_max_length_for_size(mca_btl_gm_component.gm_max_frag_size) - gm_max_length_for_size(mca_btl_gm_component.gm_max_frag_size) -
sizeof(mca_btl_base_header_t); sizeof(mca_btl_base_header_t);
/* leave pinned option */
value = 0;
param = mca_base_param_find("mpi", NULL, "leave_pinned");
mca_base_param_lookup_int(param, &value);
mca_btl_gm_component.leave_pinned = value;
return OMPI_SUCCESS; return OMPI_SUCCESS;
} }

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

@ -110,13 +110,13 @@ int mca_pml_ob1_component_open(void)
mca_pml_ob1.priority = mca_pml_ob1.priority =
mca_pml_ob1_param_register_int("priority", 0); mca_pml_ob1_param_register_int("priority", 0);
mca_pml_ob1.eager_limit = mca_pml_ob1.eager_limit =
mca_pml_ob1_param_register_int("eager_limit", 256 * 1024); mca_pml_ob1_param_register_int("eager_limit", 128 * 1024);
mca_pml_ob1.send_pipeline_depth = mca_pml_ob1.send_pipeline_depth =
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", 3); mca_pml_ob1_param_register_int("recv_pipeline_depth", 5);
mca_pml_ob1.rdma_offset = mca_pml_ob1.rdma_offset =
mca_pml_ob1_param_register_int("rdma_offset", 1024*1024); 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");

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

@ -124,6 +124,7 @@ do {
mca_mpool_base_reg_mpool_t* reg = (recvreq)->req_chunk->mpools; \ mca_mpool_base_reg_mpool_t* reg = (recvreq)->req_chunk->mpools; \
while(NULL != reg->mpool) { \ while(NULL != reg->mpool) { \
OBJ_RELEASE(reg->mpool_registration); \ OBJ_RELEASE(reg->mpool_registration); \
reg++; \
} \ } \
OBJ_RELEASE((recvreq)->req_chunk); \ OBJ_RELEASE((recvreq)->req_chunk); \
} \ } \

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

@ -383,7 +383,9 @@ int mca_pml_ob1_send_request_schedule(mca_pml_ob1_send_request_t* sendreq)
do { do {
/* allocate remaining bytes to BTLs */ /* allocate remaining bytes to BTLs */
size_t bytes_remaining = sendreq->req_rdma_offset - sendreq->req_send_offset; size_t bytes_remaining = sendreq->req_rdma_offset - sendreq->req_send_offset;
while(bytes_remaining > 0 && sendreq->req_pipeline_depth < mca_pml_ob1.send_pipeline_depth) { while(bytes_remaining > 0 &&
(sendreq->req_pipeline_depth < mca_pml_ob1.send_pipeline_depth ||
sendreq->req_rdma_offset < sendreq->req_send.req_bytes_packed)) {
mca_pml_ob1_endpoint_t* ep = mca_pml_ob1_ep_array_get_next(&proc->btl_send); mca_pml_ob1_endpoint_t* ep = mca_pml_ob1_ep_array_get_next(&proc->btl_send);
mca_pml_ob1_frag_hdr_t* hdr; mca_pml_ob1_frag_hdr_t* hdr;
mca_btl_base_descriptor_t* des; mca_btl_base_descriptor_t* des;

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

@ -231,6 +231,7 @@ OBJ_CLASS_DECLARATION(mca_pml_ob1_send_request_t);
mca_mpool_base_reg_mpool_t* reg = (sendreq)->req_chunk->mpools; \ mca_mpool_base_reg_mpool_t* reg = (sendreq)->req_chunk->mpools; \
while(NULL != reg->mpool) { \ while(NULL != reg->mpool) { \
OBJ_RELEASE(reg->mpool_registration); \ OBJ_RELEASE(reg->mpool_registration); \
reg++; \
} \ } \
OBJ_RELEASE((sendreq)->req_chunk); \ OBJ_RELEASE((sendreq)->req_chunk); \
} \ } \