1
1
This commit was SVN r9190.
Этот коммит содержится в:
Galen Shipman 2006-03-03 04:01:10 +00:00
родитель b8d1189091
Коммит 4e430b0428
5 изменённых файлов: 33 добавлений и 41 удалений

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

@ -262,7 +262,7 @@ MCA_BML_BASE_BTL_DES_ALLOC(bml_btl, des, \
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); #define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
#define DO16(buf) DO8(buf,0); DO8(buf,8); #define DO16(buf) DO8(buf,0); DO8(buf,8);
#define COMPUTE_SPECIFIC_CHECKSUM( DATA, LENGTH, ADLER32) \ #define COMPUTE_SPECIFIC_CHECKSUM( DATA, LENGTH, ADLER32 ) \
do { \ do { \
uint8_t *_data = (DATA); /* Pointer to the data to be summed */ \ uint8_t *_data = (DATA); /* Pointer to the data to be summed */ \
size_t _len = (LENGTH); /* Length in bytes */ \ size_t _len = (LENGTH); /* Length in bytes */ \

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

@ -560,24 +560,27 @@ MCA_PML_DR_RECV_FRAG_INIT(frag,proc->ompi_proc,hdr,segments,num_segments,btl);
if(match != NULL) { if(match != NULL) {
mca_pml_dr_recv_request_progress(match,btl,segments,num_segments); mca_pml_dr_recv_request_progress(match,btl,segments,num_segments);
} else if (hdr->hdr_common.hdr_type == MCA_PML_DR_HDR_TYPE_MATCH) { } else if (hdr->hdr_common.hdr_type == MCA_PML_DR_HDR_TYPE_MATCH) {
COMPUTE_SPECIFIC_CHECKSUM(segments->seg_addr.pval + COMPUTE_SPECIFIC_CHECKSUM((void*) (segments->seg_addr.lval +
sizeof(mca_pml_dr_match_hdr_t), sizeof(mca_pml_dr_match_hdr_t)),
segments->seg_len - sizeof(mca_pml_dr_match_hdr_t), segments->seg_len - sizeof(mca_pml_dr_match_hdr_t),
csum); csum);
assert(csum == hdr->hdr_csum);
mca_pml_dr_recv_frag_unmatched_ack(hdr, mca_pml_dr_recv_frag_unmatched_ack(hdr,
ompi_proc, ompi_proc,
MCA_PML_DR_HDR_FLAGS_MATCH, MCA_PML_DR_HDR_FLAGS_MATCH,
csum == hdr->hdr_csum ? 1 : 0); csum == hdr->hdr_csum ? 1 : 0);
} else { } else {
COMPUTE_SPECIFIC_CHECKSUM(segments->seg_addr.pval + COMPUTE_SPECIFIC_CHECKSUM((void*) (segments->seg_addr.lval +
sizeof(mca_pml_dr_rendezvous_hdr_t), sizeof(mca_pml_dr_rendezvous_hdr_t)),
segments->seg_len - sizeof(mca_pml_dr_rendezvous_hdr_t), segments->seg_len - sizeof(mca_pml_dr_rendezvous_hdr_t),
csum); csum);
assert(csum == hdr->hdr_csum);
mca_pml_dr_recv_frag_unmatched_ack(hdr, mca_pml_dr_recv_frag_unmatched_ack(hdr,
ompi_proc, ompi_proc,
MCA_PML_DR_HDR_FLAGS_BUFFERED, MCA_PML_DR_HDR_FLAGS_BUFFERED,
csum == hdr->hdr_csum ? : 0); csum == hdr->hdr_csum ? 1 : 0);
} }
if(additional_match) { if(additional_match) {

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

@ -151,8 +151,8 @@ static void mca_pml_dr_recv_request_matched(
mca_pml_dr_ack_hdr_t* ack; mca_pml_dr_ack_hdr_t* ack;
int rc; int rc;
mca_pml_dr_comm_proc_t* comm_proc = recvreq->req_recv.req_base.req_comm->c_pml_comm->procs + /* mca_pml_dr_comm_proc_t* comm_proc = recvreq->req_recv.req_base.req_comm->c_pml_comm->procs + */
recvreq->req_recv.req_base.req_peer; /* recvreq->req_recv.req_base.req_peer; */
/* if this hasn't been initialized yet - this is a synchronous send */ /* if this hasn't been initialized yet - this is a synchronous send */
if(NULL == proc) { if(NULL == proc) {
@ -190,7 +190,7 @@ static void mca_pml_dr_recv_request_matched(
goto retry; goto retry;
} }
mca_pml_dr_comm_proc_set_acked(comm_proc, ack->hdr_vid); /* mca_pml_dr_comm_proc_set_acked(comm_proc, ack->hdr_vid); */
return; return;
@ -221,8 +221,8 @@ static void mca_pml_dr_recv_request_vfrag_ack(
int rc; int rc;
mca_pml_dr_comm_proc_t* comm_proc = recvreq->req_recv.req_base.req_comm->c_pml_comm->procs + /* mca_pml_dr_comm_proc_t* comm_proc = recvreq->req_recv.req_base.req_comm->c_pml_comm->procs + */
recvreq->req_recv.req_base.req_peer; /* recvreq->req_recv.req_base.req_peer; */
bml_endpoint = (mca_bml_base_endpoint_t*) proc->proc_pml; bml_endpoint = (mca_bml_base_endpoint_t*) proc->proc_pml;
bml_btl = mca_bml_base_btl_array_get_next(&bml_endpoint->btl_eager); bml_btl = mca_bml_base_btl_array_get_next(&bml_endpoint->btl_eager);
@ -252,7 +252,7 @@ static void mca_pml_dr_recv_request_vfrag_ack(
if(rc != OMPI_SUCCESS) { if(rc != OMPI_SUCCESS) {
mca_bml_base_free(bml_btl, des); mca_bml_base_free(bml_btl, des);
} }
mca_pml_dr_comm_proc_set_acked(comm_proc, ack->hdr_vid); /* mca_pml_dr_comm_proc_set_acked(comm_proc, ack->hdr_vid); */
} }

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

@ -145,9 +145,7 @@ void mca_pml_dr_match_completion_free(
struct mca_btl_base_descriptor_t* descriptor, struct mca_btl_base_descriptor_t* descriptor,
int status) int status)
{ {
mca_pml_dr_send_request_t* sendreq = (mca_pml_dr_send_request_t*)descriptor->des_cbdata;
mca_bml_base_btl_t* bml_btl = (mca_bml_base_btl_t*) descriptor->des_context;
/* check completion status */ /* check completion status */
if(OMPI_SUCCESS != status) { if(OMPI_SUCCESS != status) {
/* TSW - FIX */ /* TSW - FIX */
@ -176,7 +174,6 @@ static void mca_pml_dr_rndv_completion(
int status) int status)
{ {
mca_pml_dr_send_request_t* sendreq = (mca_pml_dr_send_request_t*)descriptor->des_cbdata; mca_pml_dr_send_request_t* sendreq = (mca_pml_dr_send_request_t*)descriptor->des_cbdata;
mca_bml_base_btl_t* bml_btl = (mca_bml_base_btl_t*) descriptor->des_context;
/* check completion status */ /* check completion status */
if(OMPI_SUCCESS != status) { if(OMPI_SUCCESS != status) {
/* TSW - FIX */ /* TSW - FIX */
@ -815,42 +812,34 @@ void mca_pml_dr_send_request_acked(
mca_pml_dr_ack_hdr_t* ack) mca_pml_dr_ack_hdr_t* ack)
{ {
mca_pml_dr_vfrag_t* vfrag; mca_pml_dr_vfrag_t* vfrag;
mca_btl_base_descriptor_t* descriptor;
assert(sendreq); assert(sendreq);
descriptor = sendreq->descriptor;
MCA_PML_DR_SEND_REQUEST_VFRAG_PENDING(sendreq, ack, vfrag); MCA_PML_DR_SEND_REQUEST_VFRAG_PENDING(sendreq, ack, vfrag);
/* MCA_PML_DR_VFRAG_ACK_STOP(vfrag); */ /* MCA_PML_DR_VFRAG_ACK_STOP(vfrag); */
if(ack->hdr_common.hdr_flags & MCA_PML_DR_HDR_FLAGS_BUFFERED) { if(ack->hdr_common.hdr_flags & MCA_PML_DR_HDR_FLAGS_BUFFERED) {
if((ack->hdr_vmask & vfrag->vf_mask) == vfrag->vf_mask) { if((ack->hdr_vmask & vfrag->vf_mask) == vfrag->vf_mask) {
OPAL_THREAD_LOCK(&ompi_request_lock); if(sendreq->descriptor) {
mca_bml_base_free( (mca_bml_base_btl_t*) descriptor->des_context, descriptor ); mca_bml_base_free( (mca_bml_base_btl_t*) sendreq->descriptor->des_context, sendreq->descriptor );
sendreq->descriptor = NULL; sendreq->descriptor = NULL;
MCA_PML_DR_SEND_REQUEST_SET_BYTES_DELIVERED(sendreq, }
vfrag,
sizeof(mca_pml_dr_rendezvous_hdr_t));
OPAL_THREAD_UNLOCK(&ompi_request_lock);
} else { } else {
assert(0); assert(0);
} }
} else if(ack->hdr_common.hdr_flags & MCA_PML_DR_HDR_FLAGS_RNDV) { } else if(ack->hdr_common.hdr_flags & MCA_PML_DR_HDR_FLAGS_RNDV) {
if((ack->hdr_vmask & vfrag->vf_mask) == vfrag->vf_mask) { if((ack->hdr_vmask & vfrag->vf_mask) == vfrag->vf_mask) {
OPAL_THREAD_LOCK(&ompi_request_lock);
if(sendreq->descriptor) {
mca_bml_base_free( (mca_bml_base_btl_t*) descriptor->des_context, descriptor );
sendreq->descriptor = NULL;
MCA_PML_DR_SEND_REQUEST_SET_BYTES_DELIVERED(sendreq,
vfrag,
sizeof(mca_pml_dr_rendezvous_hdr_t));
}
OPAL_THREAD_UNLOCK(&ompi_request_lock);
sendreq->req_vfrag0.vf_recv = ack->hdr_dst_req; sendreq->req_vfrag0.vf_recv = ack->hdr_dst_req;
/* we know that we have more data, otherwise it would have been if(sendreq->descriptor) {
an MCA_PML_DR_HDR_FLAGS_MATCH */ mca_bml_base_free( (mca_bml_base_btl_t*) sendreq->descriptor->des_context, sendreq->descriptor );
sendreq->descriptor = NULL;
}
OPAL_THREAD_LOCK(&ompi_request_lock);
MCA_PML_DR_SEND_REQUEST_SET_BYTES_DELIVERED(sendreq,
vfrag,
sizeof(mca_pml_dr_rendezvous_hdr_t));
OPAL_THREAD_UNLOCK(&ompi_request_lock);
if(sendreq->req_bytes_delivered == sendreq->req_send.req_bytes_packed){ if(sendreq->req_bytes_delivered == sendreq->req_send.req_bytes_packed){
MCA_PML_DR_SEND_REQUEST_PML_COMPLETE(sendreq); MCA_PML_DR_SEND_REQUEST_PML_COMPLETE(sendreq);
} else { } else {
@ -869,7 +858,7 @@ void mca_pml_dr_send_request_acked(
} }
} else if(ack->hdr_common.hdr_flags & MCA_PML_DR_HDR_FLAGS_MATCH) { } else if(ack->hdr_common.hdr_flags & MCA_PML_DR_HDR_FLAGS_MATCH) {
if((ack->hdr_vmask & vfrag->vf_mask) == vfrag->vf_mask) { if((ack->hdr_vmask & vfrag->vf_mask) == vfrag->vf_mask) {
mca_bml_base_free( (mca_bml_base_btl_t*) descriptor->des_context, descriptor ); mca_bml_base_free( (mca_bml_base_btl_t*) sendreq->descriptor->des_context, sendreq->descriptor );
sendreq->descriptor = NULL; sendreq->descriptor = NULL;
OPAL_THREAD_LOCK(&ompi_request_lock); OPAL_THREAD_LOCK(&ompi_request_lock);

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

@ -236,7 +236,7 @@ do {
/* has an acknowledgment been received */ \ /* has an acknowledgment been received */ \
if(OPAL_THREAD_ADD32(&sendreq->req_state, 1) == 2) { \ if(OPAL_THREAD_ADD32(&sendreq->req_state, 1) == 2) { \
OPAL_THREAD_LOCK(&ompi_request_lock); \ OPAL_THREAD_LOCK(&ompi_request_lock); \
if(sendreq->req_send.req_bytes_packed - sendreq->req_send_offset) { \ if(sendreq->req_bytes_delivered != sendreq->req_send.req_bytes_packed) { \
schedule = true; \ schedule = true; \
} \ } \
OPAL_THREAD_UNLOCK(&ompi_request_lock); \ OPAL_THREAD_UNLOCK(&ompi_request_lock); \