1
1

Big datatype commit. Remove all unused features of the datatype engine. As the memory

allocation logic is completely done outside the data-type engine (in the PML) there is
no need for any special case inside the data-type engine. There is less arguments for
the ompi_convertor_pack and ompi_convertor_unpack as well (the last field free_after is
not required anymore as there is no memory allocated in the engine itself). This change
affect all components using datatypes. I test most of them, but it might happens that I
miss some ... If it's the case please let me know (don't shoot the pianist!!).

This commit was SVN r12331.
Этот коммит содержится в:
George Bosilca 2006-10-26 23:11:26 +00:00
родитель a1a4f7c422
Коммит 126a68dc9a
36 изменённых файлов: 142 добавлений и 241 удалений

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

@ -224,7 +224,7 @@ ompi_convertor_t* ompi_convertor_create( int32_t remote_arch, int32_t mode )
*/ */
int32_t ompi_convertor_pack( ompi_convertor_t* pConv, int32_t ompi_convertor_pack( ompi_convertor_t* pConv,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ) size_t* max_data )
{ {
OMPI_CONVERTOR_SET_STATUS_BEFORE_PACK_UNPACK( pConv, iov, out_size, max_data ); OMPI_CONVERTOR_SET_STATUS_BEFORE_PACK_UNPACK( pConv, iov, out_size, max_data );
@ -265,12 +265,12 @@ int32_t ompi_convertor_pack( ompi_convertor_t* pConv,
return 0; return 0;
} }
return pConv->fAdvance( pConv, iov, out_size, max_data, freeAfter ); return pConv->fAdvance( pConv, iov, out_size, max_data );
} }
int32_t ompi_convertor_unpack( ompi_convertor_t* pConv, int32_t ompi_convertor_unpack( ompi_convertor_t* pConv,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ) size_t* max_data )
{ {
OMPI_CONVERTOR_SET_STATUS_BEFORE_PACK_UNPACK( pConv, iov, out_size, max_data ); OMPI_CONVERTOR_SET_STATUS_BEFORE_PACK_UNPACK( pConv, iov, out_size, max_data );
@ -311,7 +311,7 @@ int32_t ompi_convertor_unpack( ompi_convertor_t* pConv,
return 1; return 1;
} }
return pConv->fAdvance( pConv, iov, out_size, max_data, freeAfter ); return pConv->fAdvance( pConv, iov, out_size, max_data );
} }
static inline static inline
@ -500,7 +500,6 @@ ompi_convertor_prepare_for_recv( ompi_convertor_t* convertor,
/* Here I should check that the data is not overlapping */ /* Here I should check that the data is not overlapping */
convertor->flags |= CONVERTOR_RECV; convertor->flags |= CONVERTOR_RECV;
convertor->memAlloc_fn = NULL;
OMPI_CONVERTOR_PREPARE( convertor, datatype, count, pUserBuf ); OMPI_CONVERTOR_PREPARE( convertor, datatype, count, pUserBuf );
@ -537,7 +536,6 @@ ompi_convertor_prepare_for_send( ompi_convertor_t* convertor,
const void* pUserBuf ) const void* pUserBuf )
{ {
convertor->flags |= CONVERTOR_SEND; convertor->flags |= CONVERTOR_SEND;
convertor->memAlloc_fn = NULL;
OMPI_CONVERTOR_PREPARE( convertor, datatype, count, pUserBuf ); OMPI_CONVERTOR_PREPARE( convertor, datatype, count, pUserBuf );
@ -586,8 +584,6 @@ int ompi_convertor_clone( const ompi_convertor_t* source,
destination->count = source->count; destination->count = source->count;
destination->pBaseBuf = source->pBaseBuf; destination->pBaseBuf = source->pBaseBuf;
destination->fAdvance = source->fAdvance; destination->fAdvance = source->fAdvance;
destination->memAlloc_fn = source->memAlloc_fn;
destination->memAlloc_userdata = source->memAlloc_userdata;
destination->master = source->master; destination->master = source->master;
destination->local_size = source->local_size; destination->local_size = source->local_size;
destination->remote_size = source->remote_size; destination->remote_size = source->remote_size;

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

@ -56,8 +56,7 @@ typedef struct ompi_convertor_t ompi_convertor_t;
typedef int32_t (*convertor_advance_fct_t)( ompi_convertor_t* pConvertor, typedef int32_t (*convertor_advance_fct_t)( ompi_convertor_t* pConvertor,
struct iovec* iov, struct iovec* iov,
uint32_t* out_size, uint32_t* out_size,
size_t* max_data, size_t* max_data );
int32_t* freeAfter );
typedef void*(*memalloc_fct_t)( size_t* pLength, void* userdata ); typedef void*(*memalloc_fct_t)( size_t* pLength, void* userdata );
/* The master convertor struct (defined in convertor_internal.h) */ /* The master convertor struct (defined in convertor_internal.h) */
@ -89,8 +88,6 @@ struct ompi_convertor_t {
dt_stack_t* pStack; /**< the local stack for the actual conversion */ dt_stack_t* pStack; /**< the local stack for the actual conversion */
uint32_t stack_size; /**< size of the allocated stack */ uint32_t stack_size; /**< size of the allocated stack */
convertor_advance_fct_t fAdvance; /**< pointer to the pack/unpack functions */ convertor_advance_fct_t fAdvance; /**< pointer to the pack/unpack functions */
memalloc_fct_t memAlloc_fn; /**< pointer to the memory allocation function */
void* memAlloc_userdata; /**< user data for the malloc function */
struct ompi_convertor_master_t* master; /* the master convertor */ struct ompi_convertor_master_t* master; /* the master convertor */
/* All others fields get modified for every call to pack/unpack functions */ /* All others fields get modified for every call to pack/unpack functions */
uint32_t stack_pos; /**< the actual position on the stack */ uint32_t stack_pos; /**< the actual position on the stack */
@ -124,8 +121,7 @@ OMPI_DECLSPEC int32_t
ompi_convertor_pack( ompi_convertor_t* pConv, ompi_convertor_pack( ompi_convertor_t* pConv,
struct iovec* iov, struct iovec* iov,
uint32_t* out_size, uint32_t* out_size,
size_t* max_data, size_t* max_data );
int32_t* freeAfter );
/* /*
* *
@ -134,8 +130,7 @@ OMPI_DECLSPEC int32_t
ompi_convertor_unpack( ompi_convertor_t* pConv, ompi_convertor_unpack( ompi_convertor_t* pConv,
struct iovec* iov, struct iovec* iov,
uint32_t* out_size, uint32_t* out_size,
size_t* max_data, size_t* max_data );
int32_t* freeAfter );
/* /*
* *
@ -280,12 +275,9 @@ ompi_convertor_set_position( ompi_convertor_t* convertor,
*/ */
static inline int32_t static inline int32_t
ompi_convertor_personalize( ompi_convertor_t* convertor, uint32_t flags, ompi_convertor_personalize( ompi_convertor_t* convertor, uint32_t flags,
size_t* position, size_t* position )
memalloc_fct_t allocfn, void* userdata )
{ {
convertor->flags |= flags; convertor->flags |= flags;
convertor->memAlloc_fn = allocfn;
convertor->memAlloc_userdata = userdata;
if( NULL == position ) if( NULL == position )
return OMPI_SUCCESS; return OMPI_SUCCESS;

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

@ -53,8 +53,7 @@ int32_t
ompi_pack_homogeneous_contig_function( ompi_convertor_t* pConv, ompi_pack_homogeneous_contig_function( ompi_convertor_t* pConv,
struct iovec* iov, struct iovec* iov,
uint32_t* out_size, uint32_t* out_size,
size_t* max_data, size_t* max_data )
int* freeAfter )
{ {
dt_stack_t* pStack = pConv->pStack; dt_stack_t* pStack = pConv->pStack;
char *source_base = NULL; char *source_base = NULL;
@ -62,7 +61,6 @@ ompi_pack_homogeneous_contig_function( ompi_convertor_t* pConv,
size_t length = pConv->local_size - pConv->bConverted, initial_amount = pConv->bConverted; size_t length = pConv->local_size - pConv->bConverted, initial_amount = pConv->bConverted;
ptrdiff_t initial_displ = pConv->use_desc->desc[pConv->use_desc->used].end_loop.first_elem_disp; ptrdiff_t initial_displ = pConv->use_desc->desc[pConv->use_desc->used].end_loop.first_elem_disp;
*freeAfter = 0;
source_base = (pConv->pBaseBuf + initial_displ + pStack[0].disp + pStack[1].disp); source_base = (pConv->pBaseBuf + initial_displ + pStack[0].disp + pStack[1].disp);
/* There are some optimizations that can be done if the upper level /* There are some optimizations that can be done if the upper level
@ -101,8 +99,7 @@ int32_t
ompi_pack_homogeneous_contig_with_gaps_function( ompi_convertor_t* pConv, ompi_pack_homogeneous_contig_with_gaps_function( ompi_convertor_t* pConv,
struct iovec* iov, struct iovec* iov,
uint32_t* out_size, uint32_t* out_size,
size_t* max_data, size_t* max_data )
int* freeAfter )
{ {
const ompi_datatype_t* pData = pConv->pDesc; const ompi_datatype_t* pData = pConv->pDesc;
dt_stack_t* pStack = pConv->pStack; dt_stack_t* pStack = pConv->pStack;
@ -122,7 +119,6 @@ ompi_pack_homogeneous_contig_with_gaps_function( ompi_convertor_t* pConv,
i = (uint32_t)(pConv->bConverted / pData->size); /* how many we already pack */ i = (uint32_t)(pConv->bConverted / pData->size); /* how many we already pack */
*freeAfter = 0;
/* There are some optimizations that can be done if the upper level /* There are some optimizations that can be done if the upper level
* does not provide a buffer. * does not provide a buffer.
*/ */
@ -189,17 +185,6 @@ ompi_pack_homogeneous_contig_with_gaps_function( ompi_convertor_t* pConv,
uint32_t counter; uint32_t counter;
size_t done; size_t done;
if( iov[iov_count].iov_base == NULL ) {
size_t length = iov[iov_count].iov_len;
if( 0 == length ) length = max_allowed;
iov[iov_count].iov_base = (IOVBASE_TYPE*)pConv->memAlloc_fn( &length, pConv->memAlloc_userdata );
iov[iov_count].iov_len = length;
(*freeAfter) |= (1 << 0);
if( max_allowed < (size_t)iov[iov_count].iov_len )
iov[iov_count].iov_len = max_allowed;
else
max_allowed = iov[iov_count].iov_len;
}
packed_buffer = iov[iov_count].iov_base; packed_buffer = iov[iov_count].iov_base;
done = pConv->bConverted - i * pData->size; /* how much data left last time */ done = pConv->bConverted - i * pData->size; /* how much data left last time */
user_memory += done; user_memory += done;
@ -254,8 +239,7 @@ ompi_pack_homogeneous_contig_with_gaps_function( ompi_convertor_t* pConv,
int32_t int32_t
ompi_generic_simple_pack_function( ompi_convertor_t* pConvertor, ompi_generic_simple_pack_function( ompi_convertor_t* pConvertor,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, size_t* max_data )
int32_t* freeAfter )
{ {
dt_stack_t* pStack; /* pointer to the position on the stack */ dt_stack_t* pStack; /* pointer to the position on the stack */
uint32_t pos_desc; /* actual position in the description of the derived datatype */ uint32_t pos_desc; /* actual position in the description of the derived datatype */
@ -293,20 +277,6 @@ ompi_generic_simple_pack_function( ompi_convertor_t* pConvertor,
pConvertor->stack_pos, pStack->index, pStack->count, pStack->disp ); ); pConvertor->stack_pos, pStack->index, pStack->count, pStack->disp ); );
for( iov_count = 0; iov_count < (*out_size); iov_count++ ) { for( iov_count = 0; iov_count < (*out_size); iov_count++ ) {
if( iov[iov_count].iov_base == NULL ) {
/*
* ALLOCATE SOME MEMORY ...
*/
size_t length = iov[iov_count].iov_len;
if( length <= 0 )
length = pConvertor->local_size - pConvertor->bConverted;
if( ((*max_data) - total_packed) < length )
length = (*max_data) - total_packed;
assert( 0 < length );
iov[iov_count].iov_base = (IOVBASE_TYPE*)pConvertor->memAlloc_fn( &length, pConvertor->memAlloc_userdata );
iov[iov_count].iov_len = length;
*freeAfter = (*freeAfter) | (1 << iov_count);
}
destination = iov[iov_count].iov_base; destination = iov[iov_count].iov_base;
iov_len_local = iov[iov_count].iov_len; iov_len_local = iov[iov_count].iov_len;
while( 1 ) { while( 1 ) {

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

@ -18,50 +18,50 @@
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_pack_homogeneous_contig( ompi_convertor_t* pConv, ompi_pack_homogeneous_contig( ompi_convertor_t* pConv,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_pack_homogeneous_contig_checksum( ompi_convertor_t* pConv, ompi_pack_homogeneous_contig_checksum( ompi_convertor_t* pConv,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_pack_homogeneous_contig_with_gaps( ompi_convertor_t* pConv, ompi_pack_homogeneous_contig_with_gaps( ompi_convertor_t* pConv,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_pack_homogeneous_contig_with_gaps_checksum( ompi_convertor_t* pConv, ompi_pack_homogeneous_contig_with_gaps_checksum( ompi_convertor_t* pConv,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_generic_simple_pack( ompi_convertor_t* pConvertor, ompi_generic_simple_pack( ompi_convertor_t* pConvertor,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_generic_simple_pack_checksum( ompi_convertor_t* pConvertor, ompi_generic_simple_pack_checksum( ompi_convertor_t* pConvertor,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_unpack_general( ompi_convertor_t* pConvertor, ompi_unpack_general( ompi_convertor_t* pConvertor,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_unpack_general_checksum( ompi_convertor_t* pConvertor, ompi_unpack_general_checksum( ompi_convertor_t* pConvertor,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_unpack_homogeneous_contig( ompi_convertor_t* pConv, ompi_unpack_homogeneous_contig( ompi_convertor_t* pConv,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_unpack_homogeneous_contig_checksum( ompi_convertor_t* pConv, ompi_unpack_homogeneous_contig_checksum( ompi_convertor_t* pConv,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_generic_simple_unpack( ompi_convertor_t* pConvertor, ompi_generic_simple_unpack( ompi_convertor_t* pConvertor,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
OMPI_DECLSPEC int32_t OMPI_DECLSPEC int32_t
ompi_generic_simple_unpack_checksum( ompi_convertor_t* pConvertor, ompi_generic_simple_unpack_checksum( ompi_convertor_t* pConvertor,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, int32_t* freeAfter ); size_t* max_data );
#endif /* DATATYPE_PROTOTYPES_H_HAS_BEEN_INCLUDED */ #endif /* DATATYPE_PROTOTYPES_H_HAS_BEEN_INCLUDED */

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

@ -58,8 +58,7 @@ int32_t
ompi_unpack_general_function( ompi_convertor_t* pConvertor, ompi_unpack_general_function( ompi_convertor_t* pConvertor,
struct iovec* iov, struct iovec* iov,
uint32_t* out_size, uint32_t* out_size,
size_t* max_data, size_t* max_data )
int32_t* freeAfter )
{ {
dt_stack_t* pStack; /* pointer to the position on the stack */ dt_stack_t* pStack; /* pointer to the position on the stack */
uint32_t pos_desc; /* actual position in the description of the derived datatype */ uint32_t pos_desc; /* actual position in the description of the derived datatype */
@ -184,8 +183,7 @@ int32_t
ompi_unpack_homogeneous_contig_function( ompi_convertor_t* pConv, ompi_unpack_homogeneous_contig_function( ompi_convertor_t* pConv,
struct iovec* iov, struct iovec* iov,
uint32_t* out_size, uint32_t* out_size,
size_t* max_data, size_t* max_data )
int32_t* freeAfter )
{ {
const ompi_datatype_t *pData = pConv->pDesc; const ompi_datatype_t *pData = pConv->pDesc;
char *user_memory, *packed_buffer; char *user_memory, *packed_buffer;
@ -345,8 +343,7 @@ ompi_unpack_partial_datatype( ompi_convertor_t* pConvertor, dt_elem_desc_t* pEle
int32_t int32_t
ompi_generic_simple_unpack_function( ompi_convertor_t* pConvertor, ompi_generic_simple_unpack_function( ompi_convertor_t* pConvertor,
struct iovec* iov, uint32_t* out_size, struct iovec* iov, uint32_t* out_size,
size_t* max_data, size_t* max_data )
int32_t* freeAfter )
{ {
dt_stack_t* pStack; /* pointer to the position on the stack */ dt_stack_t* pStack; /* pointer to the position on the stack */
uint32_t pos_desc; /* actual position in the description of the derived datatype */ uint32_t pos_desc; /* actual position in the description of the derived datatype */

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

@ -46,7 +46,6 @@ int32_t ompi_ddt_sndrcv( void *sbuf, int32_t scount, const ompi_datatype_t* sdty
int length, completed; int length, completed;
uint32_t iov_count; uint32_t iov_count;
size_t max_data; size_t max_data;
int32_t freeAfter;
/* First check if we really have something to do */ /* First check if we really have something to do */
if (0 == rcount) { if (0 == rcount) {
@ -68,14 +67,14 @@ int32_t ompi_ddt_sndrcv( void *sbuf, int32_t scount, const ompi_datatype_t* sdty
if (rdtype == MPI_PACKED) { if (rdtype == MPI_PACKED) {
send_convertor = OBJ_NEW(ompi_convertor_t); send_convertor = OBJ_NEW(ompi_convertor_t);
ompi_convertor_prepare_for_send( send_convertor, sdtype, scount, sbuf ); ompi_convertor_prepare_for_send( send_convertor, sdtype, scount, sbuf );
ompi_convertor_personalize( send_convertor, 0, 0, NULL, NULL ); ompi_convertor_personalize( send_convertor, 0, 0 );
iov_count = 1; iov_count = 1;
iov.iov_len = rcount; iov.iov_len = rcount;
iov.iov_base = (IOVBASE_TYPE*)rbuf; iov.iov_base = (IOVBASE_TYPE*)rbuf;
max_data = ( (size_t)iov.iov_len > (scount * sdtype->size) ? (scount * sdtype->size) : iov.iov_len ); max_data = ( (size_t)iov.iov_len > (scount * sdtype->size) ? (scount * sdtype->size) : iov.iov_len );
err = ompi_convertor_pack( send_convertor, &iov, &iov_count, &max_data, &freeAfter ); err = ompi_convertor_pack( send_convertor, &iov, &iov_count, &max_data );
OBJ_RELEASE( send_convertor ); OBJ_RELEASE( send_convertor );
return ((max_data < (uint32_t)rcount) ? MPI_ERR_TRUNCATE : MPI_SUCCESS); return ((max_data < (uint32_t)rcount) ? MPI_ERR_TRUNCATE : MPI_SUCCESS);
} }
@ -90,7 +89,7 @@ int32_t ompi_ddt_sndrcv( void *sbuf, int32_t scount, const ompi_datatype_t* sdty
iov.iov_base = (IOVBASE_TYPE*)sbuf; iov.iov_base = (IOVBASE_TYPE*)sbuf;
max_data = ( (size_t)iov.iov_len < (rcount * rdtype->size) ? iov.iov_len : (rcount * rdtype->size) ); max_data = ( (size_t)iov.iov_len < (rcount * rdtype->size) ? iov.iov_len : (rcount * rdtype->size) );
err = ompi_convertor_unpack( recv_convertor, &iov, &iov_count, &max_data, &freeAfter ); err = ompi_convertor_unpack( recv_convertor, &iov, &iov_count, &max_data );
if( scount > (int32_t)(rcount * rdtype->size) ) if( scount > (int32_t)(rcount * rdtype->size) )
err = MPI_ERR_TRUNCATE; err = MPI_ERR_TRUNCATE;
OBJ_RELEASE( recv_convertor ); OBJ_RELEASE( recv_convertor );
@ -110,8 +109,8 @@ int32_t ompi_ddt_sndrcv( void *sbuf, int32_t scount, const ompi_datatype_t* sdty
iov.iov_len = length; iov.iov_len = length;
iov_count = 1; iov_count = 1;
max_data = length; max_data = length;
completed |= ompi_convertor_pack( send_convertor, &iov, &iov_count, &max_data, &freeAfter ); completed |= ompi_convertor_pack( send_convertor, &iov, &iov_count, &max_data );
completed |= ompi_convertor_unpack( recv_convertor, &iov, &iov_count, &max_data, &freeAfter ); completed |= ompi_convertor_unpack( recv_convertor, &iov, &iov_count, &max_data );
} }
free( iov.iov_base ); free( iov.iov_base );
OBJ_RELEASE( send_convertor ); OBJ_RELEASE( send_convertor );

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

@ -271,7 +271,6 @@ mca_btl_base_descriptor_t* mca_btl_gm_prepare_src(
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
#if (OMPI_MCA_BTL_GM_HAVE_RDMA_GET || OMPI_MCA_BTL_GM_HAVE_RDMA_PUT) #if (OMPI_MCA_BTL_GM_HAVE_RDMA_GET || OMPI_MCA_BTL_GM_HAVE_RDMA_PUT)
@ -293,7 +292,7 @@ mca_btl_base_descriptor_t* mca_btl_gm_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
frag->segment.seg_len = max_data; frag->segment.seg_len = max_data;
frag->segment.seg_addr.pval = iov.iov_base; frag->segment.seg_addr.pval = iov.iov_base;
@ -330,7 +329,7 @@ mca_btl_base_descriptor_t* mca_btl_gm_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
frag->segment.seg_len = max_data; frag->segment.seg_len = max_data;
frag->segment.seg_addr.pval = iov.iov_base; frag->segment.seg_addr.pval = iov.iov_base;
@ -363,7 +362,7 @@ mca_btl_base_descriptor_t* mca_btl_gm_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*) frag->segment.seg_addr.pval + reserve; iov.iov_base = (unsigned char*) frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {
MCA_BTL_GM_FRAG_RETURN(btl, frag); MCA_BTL_GM_FRAG_RETURN(btl, frag);
@ -389,7 +388,7 @@ mca_btl_base_descriptor_t* mca_btl_gm_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*) frag->segment.seg_addr.pval + reserve; iov.iov_base = (unsigned char*) frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {

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

@ -272,7 +272,6 @@ mca_btl_base_descriptor_t* mca_btl_mvapi_prepare_src(
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
@ -290,7 +289,7 @@ mca_btl_base_descriptor_t* mca_btl_mvapi_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
frag->segment.seg_len = max_data; frag->segment.seg_len = max_data;
@ -333,7 +332,7 @@ mca_btl_base_descriptor_t* mca_btl_mvapi_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
frag->segment.seg_len = max_data; frag->segment.seg_len = max_data;
@ -378,7 +377,7 @@ mca_btl_base_descriptor_t* mca_btl_mvapi_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*)frag->segment.seg_addr.pval + reserve; iov.iov_base = (unsigned char*)frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {
MCA_BTL_IB_FRAG_RETURN(btl, frag); MCA_BTL_IB_FRAG_RETURN(btl, frag);
@ -407,7 +406,7 @@ mca_btl_base_descriptor_t* mca_btl_mvapi_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*)frag->segment.seg_addr.pval + reserve; iov.iov_base = (unsigned char*)frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {

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

@ -253,7 +253,6 @@ mca_btl_base_descriptor_t* mca_btl_mx_prepare_src( struct mca_btl_base_module_t*
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
@ -291,7 +290,7 @@ mca_btl_base_descriptor_t* mca_btl_mx_prepare_src( struct mca_btl_base_module_t*
frag->base.des_src_cnt = 1; frag->base.des_src_cnt = 1;
} }
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {
MCA_BTL_MX_FRAG_RETURN( mx_btl, frag ); MCA_BTL_MX_FRAG_RETURN( mx_btl, frag );

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

@ -341,7 +341,6 @@ mca_btl_base_descriptor_t* mca_btl_openib_prepare_src(
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
openib_btl = (mca_btl_openib_module_t*) btl; openib_btl = (mca_btl_openib_module_t*) btl;
@ -361,7 +360,7 @@ mca_btl_base_descriptor_t* mca_btl_openib_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
frag->segment.seg_len = max_data; frag->segment.seg_len = max_data;
frag->segment.seg_addr.pval = iov.iov_base; frag->segment.seg_addr.pval = iov.iov_base;
@ -399,7 +398,7 @@ mca_btl_base_descriptor_t* mca_btl_openib_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
frag->segment.seg_len = max_data; frag->segment.seg_len = max_data;
frag->segment.seg_addr.pval = iov.iov_base; frag->segment.seg_addr.pval = iov.iov_base;
@ -447,7 +446,7 @@ mca_btl_base_descriptor_t* mca_btl_openib_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*)frag->segment.seg_addr.pval + reserve; iov.iov_base = (unsigned char*)frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {
MCA_BTL_IB_FRAG_RETURN(openib_btl, frag); MCA_BTL_IB_FRAG_RETURN(openib_btl, frag);
@ -476,7 +475,7 @@ mca_btl_base_descriptor_t* mca_btl_openib_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*)frag->segment.seg_addr.pval + reserve; iov.iov_base = (unsigned char*)frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {

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

@ -304,7 +304,6 @@ mca_btl_portals_prepare_src(struct mca_btl_base_module_t* btl_base,
size_t max_data = *size; size_t max_data = *size;
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after;
int ret; int ret;
assert(&mca_btl_portals_module == (mca_btl_portals_module_t*) btl_base); assert(&mca_btl_portals_module == (mca_btl_portals_module_t*) btl_base);
@ -323,7 +322,7 @@ mca_btl_portals_prepare_src(struct mca_btl_base_module_t* btl_base,
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*) frag->segments[0].seg_addr.pval + reserve; iov.iov_base = (unsigned char*) frag->segments[0].seg_addr.pval + reserve;
ret = ompi_convertor_pack(convertor, &iov, &iov_count, ret = ompi_convertor_pack(convertor, &iov, &iov_count,
&max_data, &free_after); &max_data );
*size = max_data; *size = max_data;
if ( ret < 0 ) { if ( ret < 0 ) {
return NULL; return NULL;
@ -352,8 +351,7 @@ mca_btl_portals_prepare_src(struct mca_btl_base_module_t* btl_base,
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
&free_after);
frag->segments[0].seg_len = max_data; frag->segments[0].seg_len = max_data;
frag->segments[0].seg_addr.pval = iov.iov_base; frag->segments[0].seg_addr.pval = iov.iov_base;

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

@ -64,32 +64,32 @@ mca_btl_base_module_t mca_btl_self = {
mca_btl_self_prepare_dst, mca_btl_self_prepare_dst,
mca_btl_self_send, mca_btl_self_send,
mca_btl_self_rdma, /* put */ mca_btl_self_rdma, /* put */
mca_btl_self_rdma, mca_btl_self_rdma, /* get */
mca_btl_base_dump, mca_btl_base_dump,
NULL, /* mpool */ NULL, /* mpool */
NULL /* register error cb */ NULL /* register error cb */
}; };
int mca_btl_self_add_procs( int mca_btl_self_add_procs( struct mca_btl_base_module_t* btl,
struct mca_btl_base_module_t* btl,
size_t nprocs, size_t nprocs,
struct ompi_proc_t **procs, struct ompi_proc_t **procs,
struct mca_btl_base_endpoint_t **peers, struct mca_btl_base_endpoint_t **peers,
ompi_bitmap_t* reachability ) ompi_bitmap_t* reachability )
{ {
size_t i; size_t i;
for( i = 0; i < nprocs; i++ ) { for( i = 0; i < nprocs; i++ ) {
if( procs[i] == ompi_proc_local_proc ) { if( procs[i] == ompi_proc_local_proc ) {
ompi_bitmap_set_bit( reachability, i ); ompi_bitmap_set_bit( reachability, i );
break; /* there will always be only one ... */
} }
} }
return OMPI_SUCCESS; return OMPI_SUCCESS;
} }
int mca_btl_self_del_procs( int mca_btl_self_del_procs( struct mca_btl_base_module_t* btl,
struct mca_btl_base_module_t* btl,
size_t nprocs, size_t nprocs,
struct ompi_proc_t **procs, struct ompi_proc_t **procs,
struct mca_btl_base_endpoint_t **peers ) struct mca_btl_base_endpoint_t **peers )
@ -129,8 +129,7 @@ int mca_btl_self_finalize(struct mca_btl_base_module_t* btl)
* resources associated with the peer. * resources associated with the peer.
*/ */
int mca_btl_self_register( int mca_btl_self_register( struct mca_btl_base_module_t* btl,
struct mca_btl_base_module_t* btl,
mca_btl_base_tag_t tag, mca_btl_base_tag_t tag,
mca_btl_base_module_recv_cb_fn_t cbfunc, mca_btl_base_module_recv_cb_fn_t cbfunc,
void* cbdata ) void* cbdata )
@ -147,8 +146,7 @@ int mca_btl_self_register(
* @param btl (IN) BTL module * @param btl (IN) BTL module
* @param size (IN) Request segment size. * @param size (IN) Request segment size.
*/ */
extern mca_btl_base_descriptor_t* mca_btl_self_alloc( mca_btl_base_descriptor_t* mca_btl_self_alloc( struct mca_btl_base_module_t* btl,
struct mca_btl_base_module_t* btl,
size_t size ) size_t size )
{ {
mca_btl_self_frag_t* frag; mca_btl_self_frag_t* frag;
@ -164,6 +162,8 @@ extern mca_btl_base_descriptor_t* mca_btl_self_alloc(
} }
frag->base.des_flags = 0; frag->base.des_flags = 0;
frag->base.des_src = &(frag->segment);
frag->base.des_src_cnt = 1;
return (mca_btl_base_descriptor_t*)frag; return (mca_btl_base_descriptor_t*)frag;
} }
@ -173,11 +173,16 @@ extern mca_btl_base_descriptor_t* mca_btl_self_alloc(
* @param btl (IN) BTL module * @param btl (IN) BTL module
* @param segment (IN) Allocated segment. * @param segment (IN) Allocated segment.
*/ */
extern int mca_btl_self_free( int mca_btl_self_free( struct mca_btl_base_module_t* btl,
struct mca_btl_base_module_t* btl,
mca_btl_base_descriptor_t* des ) mca_btl_base_descriptor_t* des )
{ {
mca_btl_self_frag_t* frag = (mca_btl_self_frag_t*)des; mca_btl_self_frag_t* frag = (mca_btl_self_frag_t*)des;
frag->base.des_src = NULL;
frag->base.des_src_cnt = 0;
frag->base.des_dst = NULL;
frag->base.des_dst_cnt = 0;
if(frag->size == mca_btl_self.btl_eager_limit) { if(frag->size == mca_btl_self.btl_eager_limit) {
MCA_BTL_SELF_FRAG_RETURN_EAGER(frag); MCA_BTL_SELF_FRAG_RETURN_EAGER(frag);
} else if (frag->size == mca_btl_self.btl_max_send_size) { } else if (frag->size == mca_btl_self.btl_max_send_size) {
@ -206,11 +211,13 @@ struct mca_btl_base_descriptor_t* mca_btl_self_prepare_src(
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
/* non-contigous data */ /* non-contigous data */
if(ompi_convertor_need_buffers(convertor) || max_data < mca_btl_self.btl_max_send_size || reserve != 0) { if( ompi_convertor_need_buffers(convertor) ||
max_data < mca_btl_self.btl_max_send_size ||
reserve != 0 ) {
MCA_BTL_SELF_FRAG_ALLOC_SEND(frag, rc); MCA_BTL_SELF_FRAG_ALLOC_SEND(frag, rc);
if(NULL == frag) { if(NULL == frag) {
return NULL; return NULL;
@ -222,7 +229,7 @@ struct mca_btl_base_descriptor_t* mca_btl_self_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (IOVBASE_TYPE*)((unsigned char*)(frag+1) + reserve); iov.iov_base = (IOVBASE_TYPE*)((unsigned char*)(frag+1) + reserve);
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
if(rc < 0) { if(rc < 0) {
MCA_BTL_SELF_FRAG_RETURN_SEND(frag); MCA_BTL_SELF_FRAG_RETURN_SEND(frag);
return NULL; return NULL;
@ -240,20 +247,19 @@ struct mca_btl_base_descriptor_t* mca_btl_self_prepare_src(
iov.iov_base = NULL; iov.iov_base = NULL;
/* convertor should return offset into users buffer */ /* convertor should return offset into users buffer */
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
if(rc < 0) { if(rc < 0) {
MCA_BTL_SELF_FRAG_RETURN_RDMA(frag); MCA_BTL_SELF_FRAG_RETURN_RDMA(frag);
return NULL; return NULL;
} }
frag->segment.seg_addr.pval = iov.iov_base; frag->segment.seg_addr.pval = iov.iov_base;
frag->segment.seg_len = max_data; frag->segment.seg_len = max_data;
frag->base.des_src = &frag->segment;
frag->base.des_src_cnt = 1;
frag->base.des_dst = NULL;
frag->base.des_dst_cnt = 0;
frag->base.des_flags = 0; frag->base.des_flags = 0;
*size = max_data; *size = max_data;
} }
frag->base.des_src = &frag->segment;
frag->base.des_src_cnt = 1;
frag->segment.seg_key.key64 = (uint64_t)(intptr_t)convertor;
return &frag->base; return &frag->base;
} }
@ -282,16 +288,13 @@ struct mca_btl_base_descriptor_t* mca_btl_self_prepare_dst(
ompi_ddt_type_lb( convertor->pDesc, &lb ); ompi_ddt_type_lb( convertor->pDesc, &lb );
frag->segment.seg_addr.pval = (unsigned char*)convertor->pBaseBuf + lb + convertor->bConverted; frag->segment.seg_addr.pval = (unsigned char*)convertor->pBaseBuf + lb + convertor->bConverted;
frag->segment.seg_len = reserve + max_data; frag->segment.seg_len = reserve + max_data;
frag->base.des_src = NULL; frag->segment.seg_key.key64 = (uint64_t)(intptr_t)convertor;
frag->base.des_src_cnt = 0;
frag->base.des_dst = &frag->segment; frag->base.des_dst = &frag->segment;
frag->base.des_dst_cnt = 1; frag->base.des_dst_cnt = 1;
frag->base.des_flags = 0; frag->base.des_flags = 0;
return &frag->base; return &frag->base;
} }
/** /**
* Initiate a send to the peer. * Initiate a send to the peer.
* *
@ -299,8 +302,7 @@ struct mca_btl_base_descriptor_t* mca_btl_self_prepare_dst(
* @param peer (IN) BTL peer addressing * @param peer (IN) BTL peer addressing
*/ */
int mca_btl_self_send( int mca_btl_self_send( struct mca_btl_base_module_t* btl,
struct mca_btl_base_module_t* btl,
struct mca_btl_base_endpoint_t* endpoint, struct mca_btl_base_endpoint_t* endpoint,
struct mca_btl_base_descriptor_t* des, struct mca_btl_base_descriptor_t* des,
mca_btl_base_tag_t tag ) mca_btl_base_tag_t tag )
@ -327,8 +329,7 @@ int mca_btl_self_send(
* @param peer (IN) BTL peer addressing * @param peer (IN) BTL peer addressing
*/ */
extern int mca_btl_self_rdma( int mca_btl_self_rdma( struct mca_btl_base_module_t* btl,
struct mca_btl_base_module_t* btl,
struct mca_btl_base_endpoint_t* endpoint, struct mca_btl_base_endpoint_t* endpoint,
struct mca_btl_base_descriptor_t* des ) struct mca_btl_base_descriptor_t* des )
{ {
@ -398,5 +399,3 @@ extern int mca_btl_self_rdma(
des->des_cbfunc(btl,endpoint,des,OMPI_SUCCESS); des->des_cbfunc(btl,endpoint,des,OMPI_SUCCESS);
return OMPI_SUCCESS; return OMPI_SUCCESS;
} }

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

@ -827,7 +827,6 @@ struct mca_btl_base_descriptor_t* mca_btl_sm_prepare_src(
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
MCA_BTL_SM_FRAG_ALLOC2(frag, rc); MCA_BTL_SM_FRAG_ALLOC2(frag, rc);
@ -841,7 +840,7 @@ struct mca_btl_base_descriptor_t* mca_btl_sm_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (IOVBASE_TYPE*)(((unsigned char*)(frag+1)) + reserve); iov.iov_base = (IOVBASE_TYPE*)(((unsigned char*)(frag+1)) + reserve);
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
if(rc < 0) { if(rc < 0) {
MCA_BTL_SM_FRAG_RETURN(frag); MCA_BTL_SM_FRAG_RETURN(frag);
return NULL; return NULL;

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

@ -240,7 +240,6 @@ mca_btl_base_descriptor_t* mca_btl_tcp_prepare_src(
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
/* /*
@ -277,7 +276,7 @@ mca_btl_base_descriptor_t* mca_btl_tcp_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (IOVBASE_TYPE*)(((unsigned char*)(frag+1)) + reserve); iov.iov_base = (IOVBASE_TYPE*)(((unsigned char*)(frag+1)) + reserve);
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
if( rc < 0 ) { if( rc < 0 ) {
mca_btl_tcp_free(btl, &frag->base); mca_btl_tcp_free(btl, &frag->base);
return NULL; return NULL;
@ -292,7 +291,7 @@ mca_btl_base_descriptor_t* mca_btl_tcp_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = NULL; iov.iov_base = NULL;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
if( rc < 0 ) { if( rc < 0 ) {
mca_btl_tcp_free(btl, &frag->base); mca_btl_tcp_free(btl, &frag->base);
return NULL; return NULL;

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

@ -222,7 +222,6 @@ mca_btl_base_descriptor_t* mca_btl_template_prepare_src(
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
@ -240,7 +239,7 @@ mca_btl_base_descriptor_t* mca_btl_template_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*) frag->segment.seg_addr.pval + reserve; iov.iov_base = (unsigned char*) frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {
MCA_BTL_TEMPLATE_FRAG_RETURN_EAGER(btl, frag); MCA_BTL_TEMPLATE_FRAG_RETURN_EAGER(btl, frag);
@ -265,7 +264,7 @@ mca_btl_base_descriptor_t* mca_btl_template_prepare_src(
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (unsigned char*) frag->segment.seg_addr.pval + reserve; iov.iov_base = (unsigned char*) frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, &free_after); rc = ompi_convertor_pack(convertor, &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if( rc < 0 ) { if( rc < 0 ) {

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

@ -410,7 +410,6 @@ mca_btl_base_descriptor_t* mca_btl_udapl_prepare_src(
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
size_t max_data = *size; size_t max_data = *size;
int32_t free_after;
int rc; int rc;
#if 0 #if 0
@ -431,7 +430,7 @@ mca_btl_base_descriptor_t* mca_btl_udapl_prepare_src(
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, ompi_convertor_pack(convertor, &iov,
&iov_count, &max_data, &free_after); &iov_count, &max_data );
frag->segment.seg_len = max_data; frag->segment.seg_len = max_data;
frag->segment.seg_addr.pval = iov.iov_base; frag->segment.seg_addr.pval = iov.iov_base;
@ -470,7 +469,7 @@ mca_btl_base_descriptor_t* mca_btl_udapl_prepare_src(
iov.iov_base = NULL; iov.iov_base = NULL;
ompi_convertor_pack(convertor, &iov, ompi_convertor_pack(convertor, &iov,
&iov_count, &max_data, &free_after); &iov_count, &max_data );
rc = mpool->mpool_register( rc = mpool->mpool_register(
@ -511,7 +510,7 @@ mca_btl_base_descriptor_t* mca_btl_udapl_prepare_src(
iov.iov_base = (char *) frag->segment.seg_addr.pval + reserve; iov.iov_base = (char *) frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, rc = ompi_convertor_pack(convertor,
&iov, &iov_count, &max_data, &free_after); &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if(rc < 0) { if(rc < 0) {
MCA_BTL_UDAPL_FRAG_RETURN_EAGER(btl, frag); MCA_BTL_UDAPL_FRAG_RETURN_EAGER(btl, frag);
@ -537,7 +536,7 @@ mca_btl_base_descriptor_t* mca_btl_udapl_prepare_src(
iov.iov_base = (char *) frag->segment.seg_addr.pval + reserve; iov.iov_base = (char *) frag->segment.seg_addr.pval + reserve;
rc = ompi_convertor_pack(convertor, rc = ompi_convertor_pack(convertor,
&iov, &iov_count, &max_data, &free_after); &iov, &iov_count, &max_data );
*size = max_data; *size = max_data;
if(rc < 0) { if(rc < 0) {

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

@ -439,7 +439,6 @@ extern "C" {
* these are thread safe) * these are thread safe)
*/ */
extern uint32_t mca_coll_sm_iov_size; extern uint32_t mca_coll_sm_iov_size;
extern int32_t mca_coll_sm_bogus_free_after;
/** /**
@ -487,7 +486,7 @@ extern int32_t mca_coll_sm_bogus_free_after;
((rank) * mca_coll_sm_component.sm_fragment_size); \ ((rank) * mca_coll_sm_component.sm_fragment_size); \
(max_data) = (iov).iov_len = mca_coll_sm_component.sm_fragment_size; \ (max_data) = (iov).iov_len = mca_coll_sm_component.sm_fragment_size; \
ompi_convertor_pack(&(convertor), &(iov), &mca_coll_sm_iov_size, \ ompi_convertor_pack(&(convertor), &(iov), &mca_coll_sm_iov_size, \
&(max_data), &mca_coll_sm_bogus_free_after) &(max_data) )
/** /**
* Macro to copy a single segment out from a shared segment to a user * Macro to copy a single segment out from a shared segment to a user
@ -497,7 +496,7 @@ extern int32_t mca_coll_sm_bogus_free_after;
(iov).iov_base = (((char*) (index)->mcbmi_data) + \ (iov).iov_base = (((char*) (index)->mcbmi_data) + \
((src_rank) * mca_coll_sm_component.sm_fragment_size)); \ ((src_rank) * mca_coll_sm_component.sm_fragment_size)); \
ompi_convertor_unpack(&(convertor), &(iov), &mca_coll_sm_iov_size, \ ompi_convertor_unpack(&(convertor), &(iov), &mca_coll_sm_iov_size, \
&(max_data), &mca_coll_sm_bogus_free_after) &(max_data) )
/** /**
* Macro to memcpy a fragment between one shared segment and another * Macro to memcpy a fragment between one shared segment and another

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

@ -57,7 +57,6 @@
* Global variables * Global variables
*/ */
uint32_t mca_coll_sm_iov_size = 1; uint32_t mca_coll_sm_iov_size = 1;
int32_t mca_coll_sm_bogus_free_after = 0;
/* /*

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

@ -32,7 +32,6 @@ ompi_mtl_datatype_pack(struct ompi_convertor_t *convertor,
{ {
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after;
size_t max_data; size_t max_data;
ompi_convertor_get_packed_size(convertor, &max_data); ompi_convertor_get_packed_size(convertor, &max_data);
@ -48,8 +47,7 @@ ompi_mtl_datatype_pack(struct ompi_convertor_t *convertor,
*freeAfter = false; *freeAfter = false;
} }
ompi_convertor_pack(convertor, &iov, &iov_count, &max_data, ompi_convertor_pack( convertor, &iov, &iov_count, &max_data );
&free_after);
*buffer = iov.iov_base; *buffer = iov.iov_base;
*buffer_len = iov.iov_len; *buffer_len = iov.iov_len;
@ -91,7 +89,6 @@ ompi_mtl_datatype_unpack(struct ompi_convertor_t *convertor,
{ {
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after;
size_t max_data; size_t max_data;
iov.iov_len = buffer_len; iov.iov_len = buffer_len;
@ -100,8 +97,7 @@ ompi_mtl_datatype_unpack(struct ompi_convertor_t *convertor,
if (max_data > 0 && ompi_convertor_need_buffers(convertor)) { if (max_data > 0 && ompi_convertor_need_buffers(convertor)) {
ompi_convertor_unpack(convertor, &iov, &iov_count, ompi_convertor_unpack(convertor, &iov, &iov_count, &max_data );
&max_data, &free_after);
free(buffer); free(buffer);
} }

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

@ -50,8 +50,7 @@ ompi_mtl_mx_send(struct mca_mtl_base_module_t* mtl,
ret = ompi_mtl_datatype_pack(convertor, ret = ompi_mtl_datatype_pack(convertor,
&mtl_mx_request.mx_segment[0].segment_ptr, &mtl_mx_request.mx_segment[0].segment_ptr,
&length, &length);
&mtl_mx_request.free_after);
mtl_mx_request.mx_segment[0].segment_length = length; mtl_mx_request.mx_segment[0].segment_length = length;
@ -147,8 +146,7 @@ ompi_mtl_mx_isend(struct mca_mtl_base_module_t* mtl,
ret = ompi_mtl_datatype_pack(convertor, ret = ompi_mtl_datatype_pack(convertor,
&mtl_mx_request->mx_segment[0].segment_ptr, &mtl_mx_request->mx_segment[0].segment_ptr,
&length, &length);
&mtl_mx_request->free_after);
mtl_mx_request->mx_segment[0].segment_length = length; mtl_mx_request->mx_segment[0].segment_length = length;
mtl_mx_request->convertor = convertor; mtl_mx_request->convertor = convertor;
mtl_mx_request->type = OMPI_MTL_MX_ISEND; mtl_mx_request->type = OMPI_MTL_MX_ISEND;

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

@ -103,7 +103,6 @@ ompi_mtl_portals_get_data(ompi_mtl_portals_event_t *recv_event,
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after;
size_t max_data; size_t max_data;
ompi_mtl_portals_recv_short_block_t *block = ompi_mtl_portals_recv_short_block_t *block =
@ -123,7 +122,7 @@ ompi_mtl_portals_get_data(ompi_mtl_portals_event_t *recv_event,
/* pull out the data */ /* pull out the data */
if (iov.iov_len > 0) { if (iov.iov_len > 0) {
ompi_convertor_unpack(convertor, &iov, &iov_count, ompi_convertor_unpack(convertor, &iov, &iov_count,
&max_data, &free_after); &max_data );
} }
/* if synchronous, return an ack */ /* if synchronous, return an ack */

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

@ -228,14 +228,13 @@ ompi_osc_pt2pt_sendreq_send(ompi_osc_pt2pt_module_t *module,
written_data + sendreq->req_origin_bytes_packed) { written_data + sendreq->req_origin_bytes_packed) {
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after;
size_t max_data = sendreq->req_origin_bytes_packed; size_t max_data = sendreq->req_origin_bytes_packed;
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (IOVBASE_TYPE*)((unsigned char*) buffer->payload + written_data); iov.iov_base = (IOVBASE_TYPE*)((unsigned char*) buffer->payload + written_data);
ret = ompi_convertor_pack(&sendreq->req_origin_convertor, &iov, &iov_count, ret = ompi_convertor_pack(&sendreq->req_origin_convertor, &iov, &iov_count,
&max_data, &free_after); &max_data );
if (ret < 0) { if (ret < 0) {
ret = OMPI_ERR_FATAL; ret = OMPI_ERR_FATAL;
goto cleanup; goto cleanup;
@ -404,14 +403,13 @@ ompi_osc_pt2pt_replyreq_send(ompi_osc_pt2pt_module_t *module,
written_data + replyreq->rep_target_bytes_packed) { written_data + replyreq->rep_target_bytes_packed) {
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after;
size_t max_data = replyreq->rep_target_bytes_packed; size_t max_data = replyreq->rep_target_bytes_packed;
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (IOVBASE_TYPE*)((unsigned char*) buffer->payload + written_data); iov.iov_base = (IOVBASE_TYPE*)((unsigned char*) buffer->payload + written_data);
ret = ompi_convertor_pack(&replyreq->rep_target_convertor, &iov, &iov_count, ret = ompi_convertor_pack(&replyreq->rep_target_convertor, &iov, &iov_count,
&max_data, &free_after); &max_data );
if (ret < 0) { if (ret < 0) {
ret = OMPI_ERR_FATAL; ret = OMPI_ERR_FATAL;
goto cleanup; goto cleanup;
@ -496,7 +494,6 @@ ompi_osc_pt2pt_sendreq_recv_put(ompi_osc_pt2pt_module_t *module,
ompi_convertor_t convertor; ompi_convertor_t convertor;
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after = 0;
size_t max_data; size_t max_data;
ompi_proc_t *proc; ompi_proc_t *proc;
@ -517,8 +514,7 @@ ompi_osc_pt2pt_sendreq_recv_put(ompi_osc_pt2pt_module_t *module,
ompi_convertor_unpack(&convertor, ompi_convertor_unpack(&convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data );
&free_after);
OBJ_DESTRUCT(&convertor); OBJ_DESTRUCT(&convertor);
OBJ_RELEASE(datatype); OBJ_RELEASE(datatype);
OPAL_THREAD_ADD32(&(module->p2p_num_pending_in), -1); OPAL_THREAD_ADD32(&(module->p2p_num_pending_in), -1);
@ -720,7 +716,6 @@ ompi_osc_pt2pt_replyreq_recv(ompi_osc_pt2pt_module_t *module,
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after = 0;
size_t max_data; size_t max_data;
iov.iov_len = header->hdr_msg_length; iov.iov_len = header->hdr_msg_length;
@ -729,8 +724,7 @@ ompi_osc_pt2pt_replyreq_recv(ompi_osc_pt2pt_module_t *module,
ompi_convertor_unpack(&sendreq->req_origin_convertor, ompi_convertor_unpack(&sendreq->req_origin_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data );
&free_after);
OPAL_THREAD_ADD32(&(sendreq->req_module->p2p_num_pending_out), -1); OPAL_THREAD_ADD32(&(sendreq->req_module->p2p_num_pending_out), -1);
ompi_osc_pt2pt_sendreq_free(sendreq); ompi_osc_pt2pt_sendreq_free(sendreq);

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

@ -48,7 +48,6 @@ ompi_osc_pt2pt_process_op(ompi_osc_pt2pt_module_t *module,
ompi_convertor_t convertor; ompi_convertor_t convertor;
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after = 0;
size_t max_data; size_t max_data;
ompi_proc_t *proc; ompi_proc_t *proc;
@ -76,8 +75,7 @@ ompi_osc_pt2pt_process_op(ompi_osc_pt2pt_module_t *module,
ompi_convertor_unpack(&convertor, ompi_convertor_unpack(&convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data);
&free_after);
OBJ_DESTRUCT(&convertor); OBJ_DESTRUCT(&convertor);
} else { } else {
/* reductions other than MPI_REPLACE. Since user-defined /* reductions other than MPI_REPLACE. Since user-defined

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

@ -244,14 +244,13 @@ ompi_osc_rdma_sendreq_send(ompi_osc_rdma_module_t *module,
written_data + sendreq->req_origin_bytes_packed) { written_data + sendreq->req_origin_bytes_packed) {
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after;
size_t max_data = sendreq->req_origin_bytes_packed; size_t max_data = sendreq->req_origin_bytes_packed;
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (IOVBASE_TYPE*)((unsigned char*) descriptor->des_src[0].seg_addr.pval + written_data); iov.iov_base = (IOVBASE_TYPE*)((unsigned char*) descriptor->des_src[0].seg_addr.pval + written_data);
ret = ompi_convertor_pack(&sendreq->req_origin_convertor, &iov, &iov_count, ret = ompi_convertor_pack(&sendreq->req_origin_convertor, &iov, &iov_count,
&max_data, &free_after); &max_data );
if (ret < 0) { if (ret < 0) {
ret = OMPI_ERR_FATAL; ret = OMPI_ERR_FATAL;
goto cleanup; goto cleanup;
@ -424,14 +423,13 @@ ompi_osc_rdma_replyreq_send(ompi_osc_rdma_module_t *module,
written_data + replyreq->rep_target_bytes_packed) { written_data + replyreq->rep_target_bytes_packed) {
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after;
size_t max_data = replyreq->rep_target_bytes_packed; size_t max_data = replyreq->rep_target_bytes_packed;
iov.iov_len = max_data; iov.iov_len = max_data;
iov.iov_base = (IOVBASE_TYPE*)((unsigned char*) descriptor->des_src[0].seg_addr.pval + written_data); iov.iov_base = (IOVBASE_TYPE*)((unsigned char*) descriptor->des_src[0].seg_addr.pval + written_data);
ret = ompi_convertor_pack(&replyreq->rep_target_convertor, &iov, &iov_count, ret = ompi_convertor_pack(&replyreq->rep_target_convertor, &iov, &iov_count,
&max_data, &free_after); &max_data );
if (ret < 0) { if (ret < 0) {
ret = OMPI_ERR_FATAL; ret = OMPI_ERR_FATAL;
goto cleanup; goto cleanup;
@ -504,7 +502,6 @@ ompi_osc_rdma_sendreq_recv_put(ompi_osc_rdma_module_t *module,
ompi_convertor_t convertor; ompi_convertor_t convertor;
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after = 0;
size_t max_data; size_t max_data;
ompi_proc_t *proc; ompi_proc_t *proc;
@ -525,8 +522,7 @@ ompi_osc_rdma_sendreq_recv_put(ompi_osc_rdma_module_t *module,
ompi_convertor_unpack(&convertor, ompi_convertor_unpack(&convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data );
&free_after);
OBJ_DESTRUCT(&convertor); OBJ_DESTRUCT(&convertor);
OBJ_RELEASE(datatype); OBJ_RELEASE(datatype);
OPAL_THREAD_ADD32(&(module->p2p_num_pending_in), -1); OPAL_THREAD_ADD32(&(module->p2p_num_pending_in), -1);
@ -728,7 +724,6 @@ ompi_osc_rdma_replyreq_recv(ompi_osc_rdma_module_t *module,
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after = 0;
size_t max_data; size_t max_data;
iov.iov_len = header->hdr_msg_length; iov.iov_len = header->hdr_msg_length;
@ -737,8 +732,7 @@ ompi_osc_rdma_replyreq_recv(ompi_osc_rdma_module_t *module,
ompi_convertor_unpack(&sendreq->req_origin_convertor, ompi_convertor_unpack(&sendreq->req_origin_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data );
&free_after);
OPAL_THREAD_ADD32(&(sendreq->req_module->p2p_num_pending_out), -1); OPAL_THREAD_ADD32(&(sendreq->req_module->p2p_num_pending_out), -1);
ompi_osc_rdma_sendreq_free(sendreq); ompi_osc_rdma_sendreq_free(sendreq);

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

@ -48,7 +48,6 @@ ompi_osc_rdma_process_op(ompi_osc_rdma_module_t *module,
ompi_convertor_t convertor; ompi_convertor_t convertor;
struct iovec iov; struct iovec iov;
uint32_t iov_count = 1; uint32_t iov_count = 1;
int32_t free_after = 0;
size_t max_data; size_t max_data;
ompi_proc_t *proc; ompi_proc_t *proc;
@ -76,8 +75,7 @@ ompi_osc_rdma_process_op(ompi_osc_rdma_module_t *module,
ompi_convertor_unpack(&convertor, ompi_convertor_unpack(&convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data);
&free_after);
OBJ_DESTRUCT(&convertor); OBJ_DESTRUCT(&convertor);
} else { } else {
/* reductions other than MPI_REPLACE. Since user-defined /* reductions other than MPI_REPLACE. Since user-defined

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

@ -199,7 +199,7 @@ int mca_pml_base_bsend_request_start(ompi_request_t* request)
struct iovec iov; struct iovec iov;
unsigned int iov_count; unsigned int iov_count;
size_t max_data; size_t max_data;
int rc, freeAfter; int rc;
if(sendreq->req_bytes_packed > 0) { if(sendreq->req_bytes_packed > 0) {
@ -233,7 +233,7 @@ int mca_pml_base_bsend_request_start(ompi_request_t* request)
if((rc = ompi_convertor_pack( &sendreq->req_convertor, if((rc = ompi_convertor_pack( &sendreq->req_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &freeAfter )) < 0) { &max_data )) < 0) {
return OMPI_ERROR; return OMPI_ERROR;
} }

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

@ -227,7 +227,6 @@ do { \
struct iovec iov; \ struct iovec iov; \
unsigned int iov_count; \ unsigned int iov_count; \
size_t max_data; \ size_t max_data; \
int freeAfter; \
\ \
if(sendreq->req_count > 0) { \ if(sendreq->req_count > 0) { \
sendreq->req_buff = \ sendreq->req_buff = \
@ -241,7 +240,7 @@ do { \
ompi_convertor_pack( &sendreq->req_send.req_base.req_convertor, \ ompi_convertor_pack( &sendreq->req_send.req_base.req_convertor, \
&iov, \ &iov, \
&iov_count, \ &iov_count, \
&max_data, &freeAfter); \ &max_data ); \
ompi_convertor_prepare_for_send( &sendreq->req_send.req_base.req_convertor, MPI_PACKED, \ ompi_convertor_prepare_for_send( &sendreq->req_send.req_base.req_convertor, MPI_PACKED, \
max_data, sendreq->req_buff ); \ max_data, sendreq->req_buff ); \
} \ } \

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

@ -276,7 +276,6 @@ do {
struct iovec iov[MCA_BTL_DES_MAX_SEGMENTS]; \ struct iovec iov[MCA_BTL_DES_MAX_SEGMENTS]; \
uint32_t iov_count = 0; \ uint32_t iov_count = 0; \
size_t max_data = bytes_received; \ size_t max_data = bytes_received; \
int32_t free_after = 0; \
size_t n, offset = seg_offset; \ size_t n, offset = seg_offset; \
bool do_csum = mca_pml_dr.enable_csum && \ bool do_csum = mca_pml_dr.enable_csum && \
(request->req_endpoint->bml_endpoint->btl_flags_or & MCA_BTL_FLAGS_NEED_CSUM); \ (request->req_endpoint->bml_endpoint->btl_flags_or & MCA_BTL_FLAGS_NEED_CSUM); \
@ -300,8 +299,7 @@ do {
&(request)->req_recv.req_convertor, \ &(request)->req_recv.req_convertor, \
iov, \ iov, \
&iov_count, \ &iov_count, \
&max_data, \ &max_data); \
&free_after); \
bytes_delivered = max_data; \ bytes_delivered = max_data; \
if(bytes_received && !bytes_delivered) assert(0); \ if(bytes_received && !bytes_delivered) assert(0); \
csum = (do_csum ? \ csum = (do_csum ? \

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

@ -375,7 +375,6 @@ int mca_pml_dr_send_request_start_buffered(
struct iovec iov; struct iovec iov;
unsigned int iov_count; unsigned int iov_count;
size_t max_data; size_t max_data;
int32_t free_after;
int rc; int rc;
uint32_t csum; uint32_t csum;
bool do_csum = mca_pml_dr.enable_csum && bool do_csum = mca_pml_dr.enable_csum &&
@ -399,8 +398,7 @@ int mca_pml_dr_send_request_start_buffered(
&sendreq->req_send.req_convertor, &sendreq->req_send.req_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data)) < 0) {
&free_after)) < 0) {
mca_bml_base_free(bml_btl, descriptor); mca_bml_base_free(bml_btl, descriptor);
return rc; return rc;
} }
@ -432,8 +430,7 @@ int mca_pml_dr_send_request_start_buffered(
&sendreq->req_send.req_convertor, &sendreq->req_send.req_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data)) < 0) {
&free_after)) < 0) {
mca_bml_base_free(bml_btl, descriptor); mca_bml_base_free(bml_btl, descriptor);
return rc; return rc;
} }
@ -493,7 +490,6 @@ int mca_pml_dr_send_request_start_copy(
struct iovec iov; struct iovec iov;
unsigned int iov_count; unsigned int iov_count;
size_t max_data; size_t max_data;
int32_t free_after;
int rc; int rc;
bool do_csum = mca_pml_dr.enable_csum && bool do_csum = mca_pml_dr.enable_csum &&
(bml_btl->btl_flags & MCA_BTL_FLAGS_NEED_CSUM); (bml_btl->btl_flags & MCA_BTL_FLAGS_NEED_CSUM);
@ -516,8 +512,7 @@ int mca_pml_dr_send_request_start_copy(
&sendreq->req_send.req_convertor, &sendreq->req_send.req_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data)) < 0) {
&free_after)) < 0) {
mca_bml_base_free(bml_btl, descriptor); mca_bml_base_free(bml_btl, descriptor);
return rc; return rc;
} }

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

@ -284,7 +284,6 @@ do {
struct iovec iov[MCA_BTL_DES_MAX_SEGMENTS]; \ struct iovec iov[MCA_BTL_DES_MAX_SEGMENTS]; \
uint32_t iov_count = 0; \ uint32_t iov_count = 0; \
size_t max_data = bytes_received; \ size_t max_data = bytes_received; \
int32_t free_after = 0; \
size_t n, offset = seg_offset; \ size_t n, offset = seg_offset; \
mca_btl_base_segment_t* segment = segments; \ mca_btl_base_segment_t* segment = segments; \
\ \
@ -305,8 +304,7 @@ do {
ompi_convertor_unpack( &(request)->req_recv.req_convertor, \ ompi_convertor_unpack( &(request)->req_recv.req_convertor, \
iov, \ iov, \
&iov_count, \ &iov_count, \
&max_data, \ &max_data ); \
&free_after); \
bytes_delivered = max_data; \ bytes_delivered = max_data; \
} \ } \
} while (0) } while (0)

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

@ -360,7 +360,6 @@ int mca_pml_ob1_send_request_start_buffered(
struct iovec iov; struct iovec iov;
unsigned int iov_count; unsigned int iov_count;
size_t max_data; size_t max_data;
int32_t free_after;
int rc; int rc;
/* allocate descriptor */ /* allocate descriptor */
@ -380,8 +379,7 @@ int mca_pml_ob1_send_request_start_buffered(
&sendreq->req_send.req_convertor, &sendreq->req_send.req_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data)) < 0) {
&free_after)) < 0) {
mca_bml_base_free(bml_btl, descriptor); mca_bml_base_free(bml_btl, descriptor);
return rc; return rc;
} }
@ -432,8 +430,7 @@ int mca_pml_ob1_send_request_start_buffered(
if((rc = ompi_convertor_pack( &sendreq->req_send.req_convertor, if((rc = ompi_convertor_pack( &sendreq->req_send.req_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data)) < 0) {
&free_after)) < 0) {
mca_bml_base_free(bml_btl, descriptor); mca_bml_base_free(bml_btl, descriptor);
return rc; return rc;
} }
@ -474,7 +471,6 @@ int mca_pml_ob1_send_request_start_copy(
struct iovec iov; struct iovec iov;
unsigned int iov_count; unsigned int iov_count;
size_t max_data; size_t max_data;
int32_t free_after;
int rc; int rc;
/* allocate descriptor */ /* allocate descriptor */
@ -499,8 +495,7 @@ int mca_pml_ob1_send_request_start_copy(
&sendreq->req_send.req_convertor, &sendreq->req_send.req_convertor,
&iov, &iov,
&iov_count, &iov_count,
&max_data, &max_data)) < 0) {
&free_after)) < 0) {
mca_bml_base_free(bml_btl, descriptor); mca_bml_base_free(bml_btl, descriptor);
return rc; return rc;
} }

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

@ -38,7 +38,7 @@ static const char FUNC_NAME[] = "MPI_Pack";
int MPI_Pack(void *inbuf, int incount, MPI_Datatype datatype, int MPI_Pack(void *inbuf, int incount, MPI_Datatype datatype,
void *outbuf, int outsize, int *position, MPI_Comm comm) void *outbuf, int outsize, int *position, MPI_Comm comm)
{ {
int rc, freeAfter; int rc;
ompi_convertor_t local_convertor; ompi_convertor_t local_convertor;
struct iovec invec; struct iovec invec;
unsigned int iov_count; unsigned int iov_count;
@ -77,7 +77,7 @@ int MPI_Pack(void *inbuf, int incount, MPI_Datatype datatype,
/* Do the actual packing */ /* Do the actual packing */
iov_count = 1; iov_count = 1;
rc = ompi_convertor_pack( &local_convertor, &invec, &iov_count, &size, &freeAfter ); rc = ompi_convertor_pack( &local_convertor, &invec, &iov_count, &size );
*position += size; *position += size;
OBJ_DESTRUCT( &local_convertor ); OBJ_DESTRUCT( &local_convertor );

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

@ -37,7 +37,7 @@ int MPI_Pack_external(char *datarep, void *inbuf, int incount,
MPI_Datatype datatype, void *outbuf, MPI_Datatype datatype, void *outbuf,
MPI_Aint outsize, MPI_Aint *position) MPI_Aint outsize, MPI_Aint *position)
{ {
int rc, freeAfter; int rc;
ompi_convertor_t local_convertor; ompi_convertor_t local_convertor;
struct iovec invec; struct iovec invec;
unsigned int iov_count; unsigned int iov_count;
@ -69,7 +69,7 @@ int MPI_Pack_external(char *datarep, void *inbuf, int incount,
/* Check for truncation */ /* Check for truncation */
ompi_convertor_get_packed_size( &local_convertor, &size ); ompi_convertor_get_packed_size( &local_convertor, &size );
if( (*position + size) > (unsigned int)outsize ) { /* we can cast as we already checked for < 0 */ if( (*position + size) > (size_t)outsize ) { /* we can cast as we already checked for < 0 */
OBJ_DESTRUCT( &local_convertor ); OBJ_DESTRUCT( &local_convertor );
return OMPI_ERRHANDLER_INVOKE( MPI_COMM_WORLD, MPI_ERR_TRUNCATE, FUNC_NAME ); return OMPI_ERRHANDLER_INVOKE( MPI_COMM_WORLD, MPI_ERR_TRUNCATE, FUNC_NAME );
} }
@ -80,7 +80,7 @@ int MPI_Pack_external(char *datarep, void *inbuf, int incount,
/* Do the actual packing */ /* Do the actual packing */
iov_count = 1; iov_count = 1;
rc = ompi_convertor_pack( &local_convertor, &invec, &iov_count, &size, &freeAfter ); rc = ompi_convertor_pack( &local_convertor, &invec, &iov_count, &size );
*position += size; *position += size;
OBJ_DESTRUCT( &local_convertor ); OBJ_DESTRUCT( &local_convertor );

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

@ -70,7 +70,6 @@ int MPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype,
unsigned char recv_data[2048]; unsigned char recv_data[2048];
size_t packed_size, max_data; size_t packed_size, max_data;
uint32_t iov_count; uint32_t iov_count;
int free_after;
ompi_status_public_t recv_status; ompi_status_public_t recv_status;
ompi_proc_t* proc = ompi_comm_peer_lookup(comm,dest); ompi_proc_t* proc = ompi_comm_peer_lookup(comm,dest);
if(proc == NULL) { if(proc == NULL) {
@ -108,7 +107,7 @@ int MPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype,
iov.iov_len = recv_status._count; iov.iov_len = recv_status._count;
iov_count = 1; iov_count = 1;
max_data = recv_status._count; max_data = recv_status._count;
ompi_convertor_unpack(&convertor, &iov, &iov_count, &max_data, &free_after); ompi_convertor_unpack(&convertor, &iov, &iov_count, &max_data );
/* return status to user */ /* return status to user */
if(status != MPI_STATUS_IGNORE) { if(status != MPI_STATUS_IGNORE) {

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

@ -37,7 +37,7 @@ int MPI_Unpack(void *inbuf, int insize, int *position,
void *outbuf, int outcount, MPI_Datatype datatype, void *outbuf, int outcount, MPI_Datatype datatype,
MPI_Comm comm) MPI_Comm comm)
{ {
int rc = 1, freeAfter; int rc = 1;
ompi_convertor_t local_convertor; ompi_convertor_t local_convertor;
struct iovec outvec; struct iovec outvec;
unsigned int iov_count; unsigned int iov_count;
@ -81,8 +81,7 @@ int MPI_Unpack(void *inbuf, int insize, int *position,
/* Do the actual unpacking */ /* Do the actual unpacking */
iov_count = 1; iov_count = 1;
rc = ompi_convertor_unpack( &local_convertor, &outvec, &iov_count, rc = ompi_convertor_unpack( &local_convertor, &outvec, &iov_count, &size );
&size, &freeAfter );
*position += size; *position += size;
OBJ_DESTRUCT( &local_convertor ); OBJ_DESTRUCT( &local_convertor );

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

@ -36,7 +36,7 @@ int MPI_Unpack_external (char *datarep, void *inbuf, MPI_Aint insize,
MPI_Aint *position, void *outbuf, int outcount, MPI_Aint *position, void *outbuf, int outcount,
MPI_Datatype datatype) MPI_Datatype datatype)
{ {
int rc, freeAfter; int rc;
ompi_convertor_t local_convertor; ompi_convertor_t local_convertor;
struct iovec outvec; struct iovec outvec;
unsigned int iov_count; unsigned int iov_count;
@ -72,7 +72,7 @@ int MPI_Unpack_external (char *datarep, void *inbuf, MPI_Aint insize,
/* Do the actual unpacking */ /* Do the actual unpacking */
iov_count = 1; iov_count = 1;
rc = ompi_convertor_unpack( &local_convertor, &outvec, &iov_count, &size, &freeAfter ); rc = ompi_convertor_unpack( &local_convertor, &outvec, &iov_count, &size );
*position += size; *position += size;
OBJ_DESTRUCT( &local_convertor ); OBJ_DESTRUCT( &local_convertor );