1
1

Update to the new datatype engine. Jeff will compile the code.

This commit was SVN r3088.
Этот коммит содержится в:
George Bosilca 2004-10-13 21:13:50 +00:00
родитель 2982a7b120
Коммит fd5cd005a0
2 изменённых файлов: 35 добавлений и 31 удалений

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

@ -405,9 +405,10 @@ void mca_ptl_ib_matched(mca_ptl_base_module_t* module,
* unex_buffer to application buffer */
if (header->hdr_frag.hdr_frag_length > 0) {
struct iovec iov;
ompi_proc_t *proc;
unsigned int iov_count, max_data;
int freeAfter;
iov.iov_base = frag->frag_base.frag_addr;
iov.iov_len = frag->frag_base.frag_size;
@ -415,17 +416,16 @@ void mca_ptl_ib_matched(mca_ptl_base_module_t* module,
proc = ompi_comm_peer_lookup(request->req_base.req_comm,
request->req_base.req_peer);
ompi_convertor_copy(proc->proc_convertor,
&frag->frag_base.frag_convertor);
ompi_convertor_copy(proc->proc_convertor, &frag->frag_base.frag_convertor);
ompi_convertor_init_for_recv(
&frag->frag_base.frag_convertor,
0,
request->req_base.req_datatype,
request->req_base.req_count,
request->req_base.req_addr,
header->hdr_frag.hdr_frag_offset);
ompi_convertor_unpack(&frag->frag_base.frag_convertor, &iov, 1);
ompi_convertor_init_for_recv( &frag->frag_base.frag_convertor,
0,
request->req_base.req_datatype,
request->req_base.req_count,
request->req_base.req_addr,
header->hdr_frag.hdr_frag_offset,
NULL );
ompi_convertor_unpack(&frag->frag_base.frag_convertor, &iov, &iov_count, &max_data, &freeAfter);
}
mca_ptl_ib_recv_frag_done(header, frag, request);
}

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

@ -84,7 +84,8 @@ int mca_ptl_ib_send_frag_init(mca_ptl_ib_send_frag_t* sendfrag,
/* initialize convertor */
if(size_in > 0) {
ompi_convertor_t *convertor;
int rc;
int rc, freeAfter;
unsigned int iov_count, max_data;
/* first fragment (eager send) and first fragment of long
* protocol can use the convertor initialized on the request,
@ -94,16 +95,15 @@ int mca_ptl_ib_send_frag_init(mca_ptl_ib_send_frag_t* sendfrag,
if( offset <= mca_ptl_ib_module.super.ptl_first_frag_size ) {
convertor = &sendreq->req_convertor;
} else {
convertor = &sendfrag->frag_send.frag_base.frag_convertor;
ompi_convertor_copy(&sendreq->req_convertor, convertor);
ompi_convertor_init_for_send(
convertor,
0,
sendreq->req_base.req_datatype,
sendreq->req_base.req_count,
sendreq->req_base.req_addr,
offset);
ompi_convertor_init_for_send( convertor,
0,
sendreq->req_base.req_datatype,
sendreq->req_base.req_count,
sendreq->req_base.req_addr,
offset,
NULL );
}
@ -113,10 +113,10 @@ int mca_ptl_ib_send_frag_init(mca_ptl_ib_send_frag_t* sendfrag,
*/
iov.iov_base = &sendfrag->ib_buf.buf[header_length];
iov.iov_len = size_in;
iov_count = 1;
max_data = size_in;
if((rc = ompi_convertor_pack(convertor,
&iov, 1))
< 0) {
if((rc = ompi_convertor_pack(convertor,&iov, &iov_count, &max_data, &freeAfter)) < 0) {
ompi_output(0, "Unable to pack data");
@ -347,24 +347,28 @@ int mca_ptl_ib_put_frag_init(mca_ptl_ib_send_frag_t *sendfrag,
if(size_in > 0 && 0) {
struct iovec iov;
ompi_convertor_t *convertor;
unsigned int iov_count, max_data;
int freeAfter;
if( offset <= mca_ptl_ib_module.super.ptl_first_frag_size) {
convertor = &req->req_convertor;
} else {
convertor = &sendfrag->frag_send.frag_base.frag_convertor;
ompi_convertor_copy(&req->req_convertor, convertor);
ompi_convertor_init_for_send(
convertor,
0,
req->req_base.req_datatype,
req->req_base.req_count,
req->req_base.req_addr,
offset);
ompi_convertor_init_for_send( convertor,
0,
req->req_base.req_datatype,
req->req_base.req_count,
req->req_base.req_addr,
offset,
NULL );
}
iov.iov_base = &sendfrag->ib_buf.buf[sizeof(mca_ptl_base_frag_header_t)];
iov.iov_len = size_in;
iov_count = 1;
max_data = size_in;
rc = ompi_convertor_pack(convertor, &iov, 1);
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &freeAfter);
if (rc < 0) {
ompi_output (0, "[%s:%d] Unable to pack data\n",
__FILE__, __LINE__);