UNIQ use now the new datatype engine.
This commit was SVN r6016.
Этот коммит содержится в:
родитель
66e15238a6
Коммит
3517c87fe3
@ -77,9 +77,7 @@ bool mca_pml_uniq_recv_frag_match(
|
||||
if (NULL == frag->frag_base.frag_peer) {
|
||||
frag->frag_base.frag_peer = mca_pml_uniq_proc_lookup_remote_peer(request->req_recv.req_base.req_comm,header->hdr_src,ptl);
|
||||
}
|
||||
|
||||
/* notify ptl of match */
|
||||
ptl->ptl_matched(ptl, frag);
|
||||
MCA_PML_UNIQ_RECV_MATCHED( ptl, frag );
|
||||
|
||||
};
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "mca/ptl/ptl.h"
|
||||
#include "mca/pml/base/pml_base_recvreq.h"
|
||||
#include "mca/ptl/base/ptl_base_recvfrag.h"
|
||||
#include "datatype/convertor.h"
|
||||
|
||||
/**
|
||||
* Called by the PTL to match attempt a match for new fragments.
|
||||
@ -38,5 +39,24 @@ bool mca_pml_uniq_recv_frag_match(
|
||||
mca_ptl_base_match_header_t* header
|
||||
);
|
||||
|
||||
#define MCA_PML_UNIQ_RECV_MATCHED( ptl, frag ) \
|
||||
do { \
|
||||
mca_pml_base_recv_request_t* _request = (mca_pml_base_recv_request_t*)(frag)->frag_request; \
|
||||
/* Now that we have the sender we can create the convertor. Additionally, we know */ \
|
||||
/* that the required convertor should start at the position zero as we just match */ \
|
||||
/* the first fragment. */ \
|
||||
if( 0 != (_request)->req_bytes_packed ) { \
|
||||
(_request)->req_base.req_proc = ompi_comm_peer_lookup( \
|
||||
(_request)->req_base.req_comm, \
|
||||
frag->frag_base.frag_header.hdr_match.hdr_src); \
|
||||
ompi_convertor_copy_and_prepare_for_recv( \
|
||||
(_request)->req_base.req_proc->proc_convertor, \
|
||||
(_request)->req_base.req_datatype, \
|
||||
(_request)->req_base.req_count, \
|
||||
(_request)->req_base.req_addr, \
|
||||
&((_request)->req_convertor) ); \
|
||||
} \
|
||||
ptl->ptl_matched( (ptl), (frag) ); /* notify ptl of match */ \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "mca/ptl/base/ptl_base_comm.h"
|
||||
#include "pml_uniq_recvreq.h"
|
||||
#include "pml_uniq_sendreq.h"
|
||||
|
||||
#include "pml_uniq_recvfrag.h"
|
||||
|
||||
static mca_ptl_base_recv_frag_t* mca_pml_uniq_recv_request_match_specific_proc(
|
||||
mca_ptl_base_recv_request_t* request, int proc);
|
||||
@ -153,7 +153,7 @@ void mca_pml_uniq_recv_request_match_specific(mca_ptl_base_recv_request_t* reque
|
||||
OMPI_THREAD_UNLOCK(&pml_comm->c_matching_lock);
|
||||
if( !((MCA_PML_REQUEST_IPROBE == request->req_recv.req_base.req_type) ||
|
||||
(MCA_PML_REQUEST_PROBE == request->req_recv.req_base.req_type)) ) {
|
||||
ptl->ptl_matched(ptl, frag);
|
||||
MCA_PML_UNIQ_RECV_MATCHED( ptl, frag );
|
||||
}
|
||||
return; /* match found */
|
||||
}
|
||||
@ -207,7 +207,7 @@ void mca_pml_uniq_recv_request_match_wild(mca_ptl_base_recv_request_t* request)
|
||||
OMPI_THREAD_UNLOCK(&pml_comm->c_matching_lock);
|
||||
if( !((MCA_PML_REQUEST_IPROBE == request->req_recv.req_base.req_type) ||
|
||||
(MCA_PML_REQUEST_PROBE == request->req_recv.req_base.req_type)) ) {
|
||||
ptl->ptl_matched(ptl, frag);
|
||||
MCA_PML_UNIQ_RECV_MATCHED( ptl, frag );
|
||||
}
|
||||
return; /* match found */
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user