1
1

Add a new PERUSE macro. This is for the CONTINUE event (the one we added to the

standard). This macro allow us to specify the length of the fragment. Now we are
able to know how the message is fragmented between the network devices or inside
the communication protocol.

This commit was SVN r10508.
Этот коммит содержится в:
George Bosilca 2006-06-26 20:08:33 +00:00
родитель 41c886399b
Коммит 940dbff0fa
5 изменённых файлов: 31 добавлений и 11 удалений

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

@ -440,8 +440,8 @@ static void mca_pml_ob1_recv_request_rget(
descriptor->des_cbdata = frag;
descriptor->des_cbfunc = mca_pml_ob1_rget_completion;
PERUSE_TRACE_COMM_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
&(recvreq->req_recv.req_base), PERUSE_RECV );
PERUSE_TRACE_COMM_OMPI_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
&(recvreq->req_recv.req_base), size, PERUSE_RECV );
/* queue up get request */
rc = mca_bml_base_get(bml_btl,descriptor);
@ -757,8 +757,8 @@ void mca_pml_ob1_recv_request_schedule(mca_pml_ob1_recv_request_t* recvreq)
recvreq->req_rdma_offset += size;
OPAL_THREAD_ADD_SIZE_T(&recvreq->req_pipeline_depth,1);
PERUSE_TRACE_COMM_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
&(recvreq->req_recv.req_base), PERUSE_RECV );
PERUSE_TRACE_COMM_OMPI_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
&(recvreq->req_recv.req_base), size, PERUSE_RECV );
/* send rdma request to peer */
rc = mca_bml_base_send(bml_btl, ctl, MCA_BTL_TAG_PML);

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

@ -293,8 +293,9 @@ do {
&max_data, \
&free_after); \
bytes_delivered = max_data; \
PERUSE_TRACE_COMM_EVENT (PERUSE_COMM_REQ_XFER_CONTINUE, \
&(recvreq->req_recv.req_base), PERUSE_RECV); \
PERUSE_TRACE_COMM_OMPI_EVENT (PERUSE_COMM_REQ_XFER_CONTINUE, \
&(recvreq->req_recv.req_base), max_data, \
PERUSE_RECV); \
} else { \
bytes_delivered = 0; \
} \

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

@ -899,8 +899,8 @@ int mca_pml_ob1_send_request_schedule(mca_pml_ob1_send_request_t* sendreq)
*/
#if OMPI_WANT_PERUSE
if( 0 != sendreq->req_send_offset ) {
PERUSE_TRACE_COMM_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
&(sendreq->req_send.req_base), PERUSE_SEND );
PERUSE_TRACE_COMM_OMPI_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
&(sendreq->req_send.req_base), size, PERUSE_SEND );
}
#endif /* OMPI_WANT_PERUSE */
@ -1153,8 +1153,8 @@ void mca_pml_ob1_send_request_put(
des->des_cbfunc = mca_pml_ob1_put_completion;
des->des_cbdata = frag;
PERUSE_TRACE_COMM_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
&(sendreq->req_send.req_base), PERUSE_SEND );
PERUSE_TRACE_COMM_OMPI_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
&(sendreq->req_send.req_base), size, PERUSE_SEND );
if(OMPI_SUCCESS != (rc = mca_bml_base_put(bml_btl, des))) {
if(rc == OMPI_ERR_OUT_OF_RESOURCE) {

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

@ -83,6 +83,24 @@ do {
} \
} while(0)
#define PERUSE_TRACE_COMM_OMPI_EVENT(event, base_req, size, op) \
do { \
if( NULL != (base_req)->req_comm->c_peruse_handles ) { \
ompi_peruse_handle_t * _ptr = (base_req)->req_comm->c_peruse_handles[(event)]; \
if (NULL != _ptr && _ptr->active) { \
peruse_comm_spec_t _comm_spec; \
_comm_spec.comm = (base_req)->req_comm; \
_comm_spec.buf = (base_req)->req_addr; \
_comm_spec.count = size; \
_comm_spec.datatype = MPI_PACKED; \
_comm_spec.peer = (base_req)->req_peer; \
_comm_spec.tag = (base_req)->req_tag; \
_comm_spec.operation = (op); \
_ptr->fn(_ptr, (MPI_Aint)(base_req), &_comm_spec, _ptr->param); \
} \
} \
} while(0)
#define PERUSE_TRACE_MSG_EVENT(event, comm_ptr, hdr_peer, hdr_tag, op) \
do { \
if( NULL != (comm_ptr)->c_peruse_handles ) { \
@ -103,6 +121,7 @@ do {
#else
#define PERUSE_TRACE_COMM_EVENT(event, base_req, op)
#define PERUSE_TRACE_COMM_OMPI_EVENT(event, base_req, size, op)
#define PERUSE_TRACE_MSG_EVENT(event, comm_ptr, hdr_peer, hdr_tag, op)
#endif

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

@ -67,7 +67,7 @@ enum {
/* Queue events*/
PERUSE_COMM_SEARCH_POSTED_Q_BEGIN,
PERUSE_COMM_SEARCH_POSTED_Q_END,
PERUSE_COMM_SEARCH_UNEX_Q_BEGIN, /* XXX Devation from 1.11 */
PERUSE_COMM_SEARCH_UNEX_Q_BEGIN, /* XXX Deviation from 1.11 */
PERUSE_COMM_SEARCH_UNEX_Q_END,
/* Collective events */