opal/ddt: use optimized description when packing contiguous datatypes
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Этот коммит содержится в:
родитель
32606ad476
Коммит
9118777b66
@ -481,7 +481,9 @@ size_t opal_convertor_compute_remote_size( opal_convertor_t* pConvertor )
|
||||
pConvertor->remote_size = pConvertor->local_size;
|
||||
if( OPAL_UNLIKELY(datatype->bdt_used & pConvertor->master->hetero_mask) ) {
|
||||
pConvertor->flags &= (~CONVERTOR_HOMOGENEOUS);
|
||||
pConvertor->use_desc = &(datatype->desc);
|
||||
if (!(pConvertor->flags & CONVERTOR_SEND && pConvertor->flags & OPAL_DATATYPE_FLAG_CONTIGUOUS)) {
|
||||
pConvertor->use_desc = &(datatype->desc);
|
||||
}
|
||||
if( 0 == (pConvertor->flags & CONVERTOR_HAS_REMOTE_SIZE) ) {
|
||||
/* This is for a single datatype, we must update it with the count */
|
||||
pConvertor->remote_size = opal_datatype_compute_remote_size(datatype,
|
||||
@ -570,6 +572,7 @@ int32_t opal_convertor_prepare_for_recv( opal_convertor_t* convertor,
|
||||
mca_cuda_convertor_init(convertor, pUserBuf);
|
||||
#endif
|
||||
|
||||
assert(! (convertor->flags & CONVERTOR_SEND));
|
||||
OPAL_CONVERTOR_PREPARE( convertor, datatype, count, pUserBuf );
|
||||
|
||||
if( convertor->flags & CONVERTOR_WITH_CHECKSUM ) {
|
||||
|
@ -218,6 +218,7 @@ static inline void opal_convertor_get_unpacked_size( const opal_convertor_t* pCo
|
||||
return;
|
||||
}
|
||||
if( 0 == (CONVERTOR_HAS_REMOTE_SIZE & pConv->flags) ) {
|
||||
assert(! (pConv->flags & CONVERTOR_SEND));
|
||||
opal_convertor_compute_remote_size( (opal_convertor_t*)pConv);
|
||||
}
|
||||
*pSize = pConv->remote_size;
|
||||
|
@ -91,6 +91,7 @@ int opal_convertor_create_stack_with_pos_general( opal_convertor_t* pConvertor,
|
||||
}
|
||||
|
||||
/* remove from the main loop all the complete datatypes */
|
||||
assert (! (pConvertor->flags & CONVERTOR_SEND));
|
||||
remote_size = opal_convertor_compute_remote_size( pConvertor );
|
||||
count = (int32_t)(starting_point / remote_size);
|
||||
resting_place -= (remote_size * count);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user