1
1

defer sends for second+ fragments to improve overlap by the scheduler

This commit was SVN r2739.
Этот коммит содержится в:
Tim Woodall 2004-09-17 08:07:13 +00:00
родитель 55bdaca610
Коммит 6653be59fd
3 изменённых файлов: 9 добавлений и 6 удалений

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

@ -194,7 +194,7 @@ void mca_ptl_tcp_send_frag_return(struct mca_ptl_base_module_t* ptl, struct mca_
}
OMPI_THREAD_UNLOCK(&mca_ptl_tcp_component.tcp_lock);
mca_ptl_tcp_send_frag_init_ack(frag, ptl, pending->frag_recv.frag_base.frag_peer, pending);
mca_ptl_tcp_peer_send(pending->frag_recv.frag_base.frag_peer, frag);
mca_ptl_tcp_peer_send(pending->frag_recv.frag_base.frag_peer, frag, 0);
mca_ptl_tcp_recv_frag_return(ptl, pending);
} else {
OMPI_FREE_LIST_RETURN(&mca_ptl_tcp_component.tcp_send_frags, (ompi_list_item_t*)frag);
@ -233,7 +233,7 @@ int mca_ptl_tcp_send(
* before attempting to send the fragment
*/
sendreq->req_offset += size;
return mca_ptl_tcp_peer_send(ptl_peer, sendfrag);
return mca_ptl_tcp_peer_send(ptl_peer, sendfrag, offset);
}
@ -263,7 +263,7 @@ void mca_ptl_tcp_matched(
OMPI_THREAD_UNLOCK(&mca_ptl_tcp_component.tcp_lock);
} else {
mca_ptl_tcp_send_frag_init_ack(ack, ptl, recv_frag->frag_recv.frag_base.frag_peer, recv_frag);
mca_ptl_tcp_peer_send(ack->frag_send.frag_base.frag_peer, ack);
mca_ptl_tcp_peer_send(ack->frag_send.frag_base.frag_peer, ack, 0);
}
}

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

@ -151,7 +151,7 @@ static inline void mca_ptl_tcp_peer_event_init(mca_ptl_base_peer_t* ptl_peer, in
* queue the fragment and start the connection as required.
*/
int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t* frag)
int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t* frag, int offset)
{
int rc = OMPI_SUCCESS;
OMPI_THREAD_LOCK(&ptl_peer->peer_send_lock);
@ -169,7 +169,7 @@ int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t
case MCA_PTL_TCP_CONNECTED:
if (NULL != ptl_peer->peer_send_frag) {
ompi_list_append(&ptl_peer->peer_frags, (ompi_list_item_t*)frag);
} else {
} else if (offset == 0) {
if(mca_ptl_tcp_send_frag_handler(frag, ptl_peer->peer_sd)) {
OMPI_THREAD_UNLOCK(&ptl_peer->peer_send_lock);
mca_ptl_tcp_send_frag_progress(frag);
@ -178,6 +178,9 @@ int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t
ptl_peer->peer_send_frag = frag;
ompi_event_add(&ptl_peer->peer_send_event, 0);
}
} else {
ptl_peer->peer_send_frag = frag;
ompi_event_add(&ptl_peer->peer_send_event, 0);
}
break;
case MCA_PTL_TCP_SHUTDOWN:

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

@ -61,7 +61,7 @@ typedef struct mca_ptl_base_peer_t mca_ptl_tcp_peer_t;
void mca_ptl_tcp_set_socket_options(int sd);
void mca_ptl_tcp_peer_close(mca_ptl_base_peer_t*);
int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t*, mca_ptl_tcp_send_frag_t*);
int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t*, mca_ptl_tcp_send_frag_t*, int);
bool mca_ptl_tcp_peer_accept(mca_ptl_base_peer_t*, struct sockaddr_in*, int);
void mca_ptl_tcp_peer_shutdown(mca_ptl_base_peer_t*);