Better encapsulate heterogeneous arch handling in ob1.
This commit was SVN r16970.
Этот коммит содержится в:
родитель
8b511b969d
Коммит
5cd38b8b06
@ -348,19 +348,7 @@ int mca_pml_ob1_send_fin( ompi_proc_t* proc,
|
||||
hdr->hdr_des.pval = hdr_des;
|
||||
hdr->hdr_fail = status;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if (proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_FIN_HDR_HTON(*hdr);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_FIN, proc);
|
||||
|
||||
/* queue request */
|
||||
rc = mca_bml_base_send(
|
||||
|
@ -30,6 +30,7 @@
|
||||
#endif
|
||||
|
||||
#include "opal/types.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
|
||||
#define MCA_PML_OB1_HDR_TYPE_MATCH 1
|
||||
#define MCA_PML_OB1_HDR_TYPE_RNDV 2
|
||||
@ -275,5 +276,88 @@ union mca_pml_ob1_hdr_t {
|
||||
};
|
||||
typedef union mca_pml_ob1_hdr_t mca_pml_ob1_hdr_t;
|
||||
|
||||
#if !defined(WORDS_BIGENDIAN) && OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
static inline __opal_attribute_always_inline__ void
|
||||
ob1_hdr_ntoh(mca_pml_ob1_hdr_t *hdr, const uint8_t hdr_type)
|
||||
{
|
||||
if(!(hdr->hdr_common.hdr_flags & MCA_PML_OB1_HDR_FLAGS_NBO))
|
||||
return;
|
||||
|
||||
switch(hdr_type) {
|
||||
case MCA_PML_OB1_HDR_TYPE_MATCH:
|
||||
MCA_PML_OB1_MATCH_HDR_NTOH(hdr->hdr_match);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_RNDV:
|
||||
MCA_PML_OB1_RNDV_HDR_NTOH(hdr->hdr_rndv);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_RGET:
|
||||
MCA_PML_OB1_RGET_HDR_NTOH(hdr->hdr_rget);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_ACK:
|
||||
MCA_PML_OB1_ACK_HDR_NTOH(hdr->hdr_ack);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_FRAG:
|
||||
MCA_PML_OB1_FRAG_HDR_NTOH(hdr->hdr_frag);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_PUT:
|
||||
MCA_PML_OB1_RDMA_HDR_NTOH(hdr->hdr_rdma);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_FIN:
|
||||
MCA_PML_OB1_FIN_HDR_NTOH(hdr->hdr_fin);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define ob1_hdr_ntoh(h, t) do{}while(0)
|
||||
#endif
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#define ob1_hdr_hton(h, t, p) \
|
||||
ob1_hdr_hton_intr((mca_pml_ob1_hdr_t*)h, t, p)
|
||||
static inline __opal_attribute_always_inline__ void
|
||||
ob1_hdr_hton_intr(mca_pml_ob1_hdr_t *hdr, const uint8_t hdr_type,
|
||||
const ompi_proc_t *proc)
|
||||
{
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
|
||||
if(!(proc->proc_arch & OMPI_ARCH_ISBIGENDIAN))
|
||||
return;
|
||||
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
switch(hdr_type) {
|
||||
case MCA_PML_OB1_HDR_TYPE_MATCH:
|
||||
MCA_PML_OB1_MATCH_HDR_HTON(hdr->hdr_match);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_RNDV:
|
||||
MCA_PML_OB1_RNDV_HDR_HTON(hdr->hdr_rndv);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_RGET:
|
||||
MCA_PML_OB1_RGET_HDR_HTON(hdr->hdr_rget);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_ACK:
|
||||
MCA_PML_OB1_ACK_HDR_HTON(hdr->hdr_ack);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_FRAG:
|
||||
MCA_PML_OB1_FRAG_HDR_HTON(hdr->hdr_frag);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_PUT:
|
||||
MCA_PML_OB1_RDMA_HDR_HTON(hdr->hdr_rdma);
|
||||
break;
|
||||
case MCA_PML_OB1_HDR_TYPE_FIN:
|
||||
MCA_PML_OB1_FIN_HDR_HTON(hdr->hdr_fin);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
#define ob1_hdr_hton(h, t, p) do{}while(0)
|
||||
#endif
|
||||
#endif
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include "pml_ob1_recvreq.h"
|
||||
#include "pml_ob1_sendreq.h"
|
||||
#include "pml_ob1_hdr.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "ompi/peruse/peruse-internal.h"
|
||||
|
||||
OBJ_CLASS_INSTANCE( mca_pml_ob1_buffer_t,
|
||||
@ -86,42 +85,26 @@ void mca_pml_ob1_recv_frag_callback( mca_btl_base_module_t* btl,
|
||||
switch(hdr->hdr_common.hdr_type) {
|
||||
case MCA_PML_OB1_HDR_TYPE_MATCH:
|
||||
{
|
||||
#if !defined(WORDS_BIGENDIAN) && OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (hdr->hdr_common.hdr_flags & MCA_PML_OB1_HDR_FLAGS_NBO) {
|
||||
MCA_PML_OB1_MATCH_HDR_NTOH(hdr->hdr_match);
|
||||
}
|
||||
#endif
|
||||
ob1_hdr_ntoh(hdr, MCA_PML_OB1_HDR_TYPE_MATCH);
|
||||
mca_pml_ob1_recv_frag_match(btl, &hdr->hdr_match, segments,des->des_dst_cnt);
|
||||
break;
|
||||
}
|
||||
case MCA_PML_OB1_HDR_TYPE_RNDV:
|
||||
{
|
||||
#if !defined(WORDS_BIGENDIAN) && OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (hdr->hdr_common.hdr_flags & MCA_PML_OB1_HDR_FLAGS_NBO) {
|
||||
MCA_PML_OB1_RNDV_HDR_NTOH(hdr->hdr_rndv);
|
||||
}
|
||||
#endif
|
||||
ob1_hdr_ntoh(hdr, MCA_PML_OB1_HDR_TYPE_RNDV);
|
||||
mca_pml_ob1_recv_frag_match(btl, &hdr->hdr_match, segments,des->des_dst_cnt);
|
||||
break;
|
||||
}
|
||||
case MCA_PML_OB1_HDR_TYPE_RGET:
|
||||
{
|
||||
#if !defined(WORDS_BIGENDIAN) && OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (hdr->hdr_common.hdr_flags & MCA_PML_OB1_HDR_FLAGS_NBO) {
|
||||
MCA_PML_OB1_RGET_HDR_NTOH(hdr->hdr_rget);
|
||||
}
|
||||
#endif
|
||||
ob1_hdr_ntoh(hdr, MCA_PML_OB1_HDR_TYPE_RGET);
|
||||
mca_pml_ob1_recv_frag_match(btl, &hdr->hdr_match, segments,des->des_dst_cnt);
|
||||
break;
|
||||
}
|
||||
case MCA_PML_OB1_HDR_TYPE_ACK:
|
||||
{
|
||||
mca_pml_ob1_send_request_t* sendreq;
|
||||
#if !defined(WORDS_BIGENDIAN) && OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (hdr->hdr_common.hdr_flags & MCA_PML_OB1_HDR_FLAGS_NBO) {
|
||||
MCA_PML_OB1_ACK_HDR_NTOH(hdr->hdr_ack);
|
||||
}
|
||||
#endif
|
||||
ob1_hdr_ntoh(hdr, MCA_PML_OB1_HDR_TYPE_ACK);
|
||||
sendreq = (mca_pml_ob1_send_request_t*)hdr->hdr_ack.hdr_src_req.pval;
|
||||
sendreq->req_recv = hdr->hdr_ack.hdr_dst_req;
|
||||
|
||||
@ -145,11 +128,7 @@ void mca_pml_ob1_recv_frag_callback( mca_btl_base_module_t* btl,
|
||||
case MCA_PML_OB1_HDR_TYPE_FRAG:
|
||||
{
|
||||
mca_pml_ob1_recv_request_t* recvreq;
|
||||
#if !defined(WORDS_BIGENDIAN) && OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (hdr->hdr_common.hdr_flags & MCA_PML_OB1_HDR_FLAGS_NBO) {
|
||||
MCA_PML_OB1_FRAG_HDR_NTOH(hdr->hdr_frag);
|
||||
}
|
||||
#endif
|
||||
ob1_hdr_ntoh(hdr, MCA_PML_OB1_HDR_TYPE_FRAG);
|
||||
recvreq = (mca_pml_ob1_recv_request_t*)hdr->hdr_frag.hdr_dst_req.pval;
|
||||
mca_pml_ob1_recv_request_progress(recvreq,btl,segments,des->des_dst_cnt);
|
||||
break;
|
||||
@ -157,11 +136,7 @@ void mca_pml_ob1_recv_frag_callback( mca_btl_base_module_t* btl,
|
||||
case MCA_PML_OB1_HDR_TYPE_PUT:
|
||||
{
|
||||
mca_pml_ob1_send_request_t* sendreq;
|
||||
#if !defined(WORDS_BIGENDIAN) && OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (hdr->hdr_common.hdr_flags & MCA_PML_OB1_HDR_FLAGS_NBO) {
|
||||
MCA_PML_OB1_RDMA_HDR_NTOH(hdr->hdr_rdma);
|
||||
}
|
||||
#endif
|
||||
ob1_hdr_ntoh(hdr, MCA_PML_OB1_HDR_TYPE_PUT);
|
||||
sendreq = (mca_pml_ob1_send_request_t*)hdr->hdr_rdma.hdr_req.pval;
|
||||
mca_pml_ob1_send_request_put(sendreq,btl,&hdr->hdr_rdma);
|
||||
break;
|
||||
@ -169,11 +144,7 @@ void mca_pml_ob1_recv_frag_callback( mca_btl_base_module_t* btl,
|
||||
case MCA_PML_OB1_HDR_TYPE_FIN:
|
||||
{
|
||||
mca_btl_base_descriptor_t* rdma;
|
||||
#if !defined(WORDS_BIGENDIAN) && OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (hdr->hdr_common.hdr_flags & MCA_PML_OB1_HDR_FLAGS_NBO) {
|
||||
MCA_PML_OB1_FIN_HDR_NTOH(hdr->hdr_fin);
|
||||
}
|
||||
#endif
|
||||
ob1_hdr_ntoh(hdr, MCA_PML_OB1_HDR_TYPE_FIN);
|
||||
rdma = (mca_btl_base_descriptor_t*)hdr->hdr_fin.hdr_des.pval;
|
||||
rdma->des_cbfunc(btl, NULL, rdma,
|
||||
hdr->hdr_fin.hdr_fail ? OMPI_ERROR : OMPI_SUCCESS);
|
||||
|
@ -203,19 +203,7 @@ int mca_pml_ob1_recv_request_ack_send_btl(
|
||||
ack->hdr_dst_req.pval = hdr_dst_req;
|
||||
ack->hdr_send_offset = hdr_send_offset;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
ack->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if (proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
ack->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_ACK_HDR_HTON(*ack);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(ack, MCA_PML_OB1_HDR_TYPE_ACK, proc);
|
||||
|
||||
/* initialize descriptor */
|
||||
des->des_flags |= MCA_BTL_DES_FLAGS_PRIORITY;
|
||||
@ -704,20 +692,8 @@ int mca_pml_ob1_recv_request_schedule_once(
|
||||
|
||||
if(!recvreq->req_ack_sent)
|
||||
recvreq->req_ack_sent = true;
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if(recvreq->req_recv.req_base.req_proc->proc_arch &
|
||||
OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_RDMA_HDR_HTON(*hdr);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_PUT,
|
||||
recvreq->req_recv.req_base.req_proc);
|
||||
|
||||
PERUSE_TRACE_COMM_OMPI_EVENT( PERUSE_COMM_REQ_XFER_CONTINUE,
|
||||
&(recvreq->req_recv.req_base), size,
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include "pml_ob1_rdmafrag.h"
|
||||
#include "pml_ob1_recvreq.h"
|
||||
#include "ompi/mca/bml/base/base.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
|
||||
OBJ_CLASS_INSTANCE(mca_pml_ob1_send_range_t, ompi_free_list_item_t,
|
||||
NULL, NULL);
|
||||
@ -361,19 +360,8 @@ int mca_pml_ob1_send_request_start_buffered(
|
||||
hdr->hdr_rndv.hdr_msg_length = sendreq->req_send.req_bytes_packed;
|
||||
hdr->hdr_rndv.hdr_src_req.pval = sendreq;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if (sendreq->req_send.req_base.req_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_RNDV_HDR_HTON(hdr->hdr_rndv);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_RNDV,
|
||||
sendreq->req_send.req_base.req_proc);
|
||||
|
||||
/* update lengths */
|
||||
segment->seg_len = sizeof(mca_pml_ob1_rendezvous_hdr_t) + max_data;
|
||||
@ -470,19 +458,8 @@ int mca_pml_ob1_send_request_start_copy( mca_pml_ob1_send_request_t* sendreq,
|
||||
hdr->hdr_match.hdr_tag = sendreq->req_send.req_base.req_tag;
|
||||
hdr->hdr_match.hdr_seq = (uint16_t)sendreq->req_send.req_base.req_sequence;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if (sendreq->req_send.req_base.req_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_MATCH_HDR_HTON(hdr->hdr_match);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_MATCH,
|
||||
sendreq->req_send.req_base.req_proc);
|
||||
|
||||
/* update lengths */
|
||||
segment->seg_len = sizeof(mca_pml_ob1_match_hdr_t) + max_data;
|
||||
@ -550,19 +527,8 @@ int mca_pml_ob1_send_request_start_prepare( mca_pml_ob1_send_request_t* sendreq,
|
||||
hdr->hdr_match.hdr_tag = sendreq->req_send.req_base.req_tag;
|
||||
hdr->hdr_match.hdr_seq = (uint16_t)sendreq->req_send.req_base.req_sequence;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if (sendreq->req_send.req_base.req_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_MATCH_HDR_HTON(hdr->hdr_match);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_MATCH,
|
||||
sendreq->req_send.req_base.req_proc);
|
||||
|
||||
/* short message */
|
||||
descriptor->des_cbfunc = mca_pml_ob1_match_completion_free;
|
||||
@ -654,19 +620,8 @@ int mca_pml_ob1_send_request_start_rdma(
|
||||
hdr->hdr_rget.hdr_des.pval = src;
|
||||
hdr->hdr_rget.hdr_seg_cnt = src->des_src_cnt;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if (sendreq->req_send.req_base.req_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_RGET_HDR_HTON(hdr->hdr_rget);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_RGET,
|
||||
sendreq->req_send.req_base.req_proc);
|
||||
|
||||
for( i = 0; i < src->des_src_cnt; i++ ) {
|
||||
hdr->hdr_rget.hdr_segs[i].seg_addr.lval = ompi_ptr_ptol(src->des_src[i].seg_addr.pval);
|
||||
@ -712,19 +667,8 @@ int mca_pml_ob1_send_request_start_rdma(
|
||||
hdr->hdr_rndv.hdr_msg_length = sendreq->req_send.req_bytes_packed;
|
||||
hdr->hdr_rndv.hdr_src_req.pval = sendreq;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if (sendreq->req_send.req_base.req_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_RNDV_HDR_HTON(hdr->hdr_rndv);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_RNDV,
|
||||
sendreq->req_send.req_base.req_proc);
|
||||
|
||||
/* update lengths with number of bytes actually packed */
|
||||
segment->seg_len = sizeof(mca_pml_ob1_rendezvous_hdr_t);
|
||||
@ -797,19 +741,8 @@ int mca_pml_ob1_send_request_start_rndv( mca_pml_ob1_send_request_t* sendreq,
|
||||
hdr->hdr_rndv.hdr_msg_length = sendreq->req_send.req_bytes_packed;
|
||||
hdr->hdr_rndv.hdr_src_req.pval = sendreq;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/* if we are little endian and the remote side is big endian,
|
||||
we're responsible for making sure the data is in network byte
|
||||
order */
|
||||
if (sendreq->req_send.req_base.req_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_RNDV_HDR_HTON(hdr->hdr_rndv);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_RNDV,
|
||||
sendreq->req_send.req_base.req_proc);
|
||||
|
||||
/* first fragment of a long message */
|
||||
des->des_flags |= MCA_BTL_DES_FLAGS_PRIORITY;
|
||||
@ -1010,22 +943,8 @@ cannot_pack:
|
||||
hdr->hdr_src_req.pval = sendreq;
|
||||
hdr->hdr_dst_req = sendreq->req_recv;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
/*
|
||||
* if we are little endian and the remote side is big endian,
|
||||
* we're responsible for making sure the data is in network byte
|
||||
* order
|
||||
*/
|
||||
if(sendreq->req_send.req_base.req_proc->proc_arch &
|
||||
OMPI_ARCH_ISBIGENDIAN) {
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
MCA_PML_OB1_FRAG_HDR_HTON(*hdr);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_FRAG,
|
||||
sendreq->req_send.req_base.req_proc);
|
||||
|
||||
#if OMPI_WANT_PERUSE
|
||||
PERUSE_TRACE_COMM_OMPI_EVENT(PERUSE_COMM_REQ_XFER_CONTINUE,
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include "pml_ob1_rdma.h"
|
||||
#include "pml_ob1_rdmafrag.h"
|
||||
#include "ompi/datatype/convertor.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "ompi/mca/bml/bml.h"
|
||||
|
||||
BEGIN_C_DECLS
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user