Back to working state using the new headers. Having less data to move around decrease
a little bit the latency. But I still have to improuve it ... This commit was SVN r3618.
Этот коммит содержится в:
родитель
b80e69bc69
Коммит
67d6d86638
@ -424,7 +424,7 @@ mca_ptl_gm_matched( mca_ptl_base_module_t * ptl,
|
||||
bytes_recv = frag->frag_base.frag_size;
|
||||
iov.iov_len = bytes_recv;
|
||||
|
||||
if (header->hdr_frag.hdr_frag_length > 0) {
|
||||
if( header->hdr_match.hdr_msg_length > 0 ) {
|
||||
ompi_proc_t *proc;
|
||||
unsigned int max_data, out_size;
|
||||
int freeAfter;
|
||||
@ -438,7 +438,7 @@ mca_ptl_gm_matched( mca_ptl_base_module_t * ptl,
|
||||
request->req_base.req_datatype,
|
||||
request->req_base.req_count,
|
||||
request->req_base.req_addr,
|
||||
header->hdr_frag.hdr_frag_offset, NULL );
|
||||
0 /* TO DO which offset ? */, NULL );
|
||||
out_size = 1;
|
||||
max_data = iov.iov_len;
|
||||
rc = ompi_convertor_unpack( &frag->frag_base.frag_convertor, &(iov),
|
||||
@ -448,7 +448,7 @@ mca_ptl_gm_matched( mca_ptl_base_module_t * ptl,
|
||||
}
|
||||
|
||||
/* update progress*/
|
||||
ptl->ptl_recv_progress( ptl, request, bytes_recv,bytes_recv);
|
||||
ptl->ptl_recv_progress( ptl, request, bytes_recv, bytes_recv );
|
||||
|
||||
/* Now update the status of the fragment */
|
||||
((mca_ptl_gm_recv_frag_t*)frag)->matched = true;
|
||||
@ -457,7 +457,6 @@ mca_ptl_gm_matched( mca_ptl_base_module_t * ptl,
|
||||
((mca_ptl_gm_recv_frag_t*)frag)->have_allocated_buffer = false;
|
||||
}
|
||||
|
||||
/* return to free list */
|
||||
OMPI_FREE_LIST_RETURN( &(gm_ptl->gm_recv_frags_free),
|
||||
(ompi_list_item_t*)((mca_ptl_gm_recv_frag_t*)frag) );
|
||||
/* I'm done with this fragment. Return it to the free list */
|
||||
OMPI_FREE_LIST_RETURN( &(gm_ptl->gm_recv_frags_free), (ompi_list_item_t*)frag );
|
||||
}
|
||||
|
@ -342,7 +342,7 @@ mca_ptl_gm_init_sendrecv (mca_ptl_gm_module_t * ptl)
|
||||
OMPI_FREE_LIST_RETURN( &(ptl->gm_recv_frags_free), (ompi_list_item_t *)free_rfragment );
|
||||
free_rfragment++;
|
||||
|
||||
gm_provide_receive_buffer( ptl->gm_port, ptl->gm_recv_dma_memory + i * GM_BUF_SIZE,
|
||||
gm_provide_receive_buffer( ptl->gm_port, (char*)ptl->gm_recv_dma_memory + i * GM_BUF_SIZE,
|
||||
GM_SIZE, GM_LOW_PRIORITY );
|
||||
DO_DEBUG(printf( "%3d : gm register GM receive buffer %p\n", i, (void*)ptl->gm_recv_dma_memory ) );
|
||||
}
|
||||
|
@ -217,7 +217,7 @@ void send_callback(struct gm_port *port,void * context, gm_status_t status)
|
||||
|| mca_pml_base_send_request_matched(gm_send_req)) {
|
||||
A_PRINT(" send callback : match not required\n");
|
||||
ptl->super.ptl_send_progress( (mca_ptl_base_module_t*)ptl, frag->send_frag.frag_request,
|
||||
header->hdr_frag.hdr_frag_length);
|
||||
header->hdr_match.hdr_msg_length);
|
||||
|
||||
/* Return sendfrag to free list */
|
||||
A_PRINT("Return frag : %p", frag);
|
||||
@ -332,7 +332,7 @@ mca_ptl_gm_recv_frag_match( struct mca_ptl_gm_module_t *ptl,
|
||||
|
||||
recv_frag->frag_recv.frag_base.frag_addr =
|
||||
(char *) header + sizeof(mca_ptl_base_match_header_t);
|
||||
recv_frag->frag_recv.frag_base.frag_size = header->hdr_frag.hdr_frag_length;
|
||||
recv_frag->frag_recv.frag_base.frag_size = header->hdr_match.hdr_msg_length;
|
||||
|
||||
recv_frag->matched = false;
|
||||
recv_frag->have_allocated_buffer = false;
|
||||
|
@ -111,14 +111,14 @@ extern "C" {
|
||||
sendfrag->type = MATCH;
|
||||
} else {
|
||||
hdr->hdr_common.hdr_type = MCA_PTL_HDR_TYPE_FRAG;
|
||||
hdr->hdr_frag.hdr_frag_offset = offset;
|
||||
hdr->hdr_frag.hdr_frag_length = *size;
|
||||
hdr->hdr_frag.hdr_src_ptr.lval = 0;
|
||||
hdr->hdr_frag.hdr_src_ptr.pval = sendfrag; /* pointer to the frag */
|
||||
hdr->hdr_frag.hdr_dst_ptr = sendreq->req_peer_match;
|
||||
|
||||
sendfrag->type = FRAG;
|
||||
}
|
||||
hdr->hdr_frag.hdr_frag_offset = offset;
|
||||
hdr->hdr_frag.hdr_frag_length = *size;
|
||||
hdr->hdr_frag.hdr_src_ptr.lval = 0;
|
||||
hdr->hdr_frag.hdr_src_ptr.pval = sendfrag; /* pointer to the frag */
|
||||
hdr->hdr_frag.hdr_dst_ptr = sendreq->req_peer_match;
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user