Skip to content

Commit db8d2d0

Browse files
committed
Start optimizing the code.
Signed-off-by: George Bosilca <[email protected]>
1 parent 3562d70 commit db8d2d0

File tree

2 files changed

+18
-22
lines changed

2 files changed

+18
-22
lines changed

opal/datatype/opal_datatype_pack.h

+9-11
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@ pack_predefined_data( opal_convertor_t* CONVERTOR,
4949
/* premptively update the number of COUNT we will return. */
5050
*(COUNT) -= cando_count;
5151

52-
if( 1 == _elem->count ) { /* Everything is contiguous, handle it as a prologue */
52+
if( 1 == _elem->count ) { /* Everything is contiguous, handle it as the last contiguous piece */
5353
goto do_epilog;
5454
}
5555
if( 1 == _elem->blocklen ) { /* Do as many full blocklen as possible */
5656
for(; cando_count > 0; cando_count--) {
5757
OPAL_DATATYPE_SAFEGUARD_POINTER( _memory, blocklen_bytes, (CONVERTOR)->pBaseBuf,
5858
(CONVERTOR)->pDesc, (CONVERTOR)->count );
59-
DO_DEBUG( opal_output( 0, "pack 2. memcpy( %p, %p, %lu ) => space %lu\n",
59+
DO_DEBUG( opal_output( 0, "pack memcpy( %p, %p, %lu ) => space %lu [blen = 1]\n",
6060
(void*)_packed, (void*)_memory, (unsigned long)blocklen_bytes, (unsigned long)(*(SPACE) - (_packed - *(packed))) ); );
6161
MEMCPY_CSUM( _packed, _memory, blocklen_bytes, (CONVERTOR) );
6262
_packed += blocklen_bytes;
@@ -75,23 +75,21 @@ pack_predefined_data( opal_convertor_t* CONVERTOR,
7575
* should be manipulated in the current call (this number is instead reflected on the
7676
* SPACE).
7777
*/
78-
do_now = do_now % _elem->blocklen; /* any partial elements ? */
79-
80-
if( 0 != do_now ) {
78+
if( 0 != (do_now = do_now % _elem->blocklen) ) { /* any partial elements ? */
8179
size_t left_in_block = do_now; /* left in the current blocklen */
82-
do_now = (do_now > cando_count ) ? cando_count : do_now;
80+
do_now = (do_now > cando_count) ? cando_count : do_now;
8381
do_now_bytes = do_now * opal_datatype_basicDatatypes[_elem->common.type]->size;
8482

8583
OPAL_DATATYPE_SAFEGUARD_POINTER( _memory, do_now_bytes, (CONVERTOR)->pBaseBuf,
8684
(CONVERTOR)->pDesc, (CONVERTOR)->count );
87-
DO_DEBUG( opal_output( 0, "pack 1. memcpy( %p, %p, %lu ) => space %lu [prolog]\n",
85+
DO_DEBUG( opal_output( 0, "pack memcpy( %p, %p, %lu ) => space %lu [prolog]\n",
8886
_packed, (void*)_memory, (unsigned long)do_now_bytes, (unsigned long)(*(SPACE)) ); );
8987
MEMCPY_CSUM( _packed, _memory, do_now_bytes, (CONVERTOR) );
88+
_packed += do_now_bytes;
9089
_memory += (ptrdiff_t)do_now_bytes;
91-
/* compensate if we just completed a blocklen */
92-
if( do_now == left_in_block )
90+
91+
if( do_now == left_in_block ) /* compensate if completed a blocklen */
9392
_memory += _elem->extent - blocklen_bytes;
94-
_packed += do_now_bytes;
9593
cando_count -= do_now;
9694
}
9795

@@ -119,7 +117,7 @@ pack_predefined_data( opal_convertor_t* CONVERTOR,
119117
OPAL_DATATYPE_SAFEGUARD_POINTER( _memory, do_now_bytes, (CONVERTOR)->pBaseBuf,
120118
(CONVERTOR)->pDesc, (CONVERTOR)->count );
121119
DO_DEBUG( opal_output( 0, "pack 3. memcpy( %p, %p, %lu ) => space %lu [epilog]\n",
122-
(void*)_packed, (void*)_memory, (unsigned long)do_now_bytes, (unsigned long)(*(SPACE)) ); );
120+
(void*)_packed, (void*)_memory, (unsigned long)do_now_bytes, (unsigned long)(*(SPACE) - (_packed - *(packed))) ); );
123121
MEMCPY_CSUM( _packed, _memory, do_now_bytes, (CONVERTOR) );
124122
_memory += do_now_bytes;
125123
_packed += do_now_bytes;

opal/datatype/opal_datatype_unpack.h

+9-11
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@ unpack_predefined_data( opal_convertor_t* CONVERTOR,
4949
/* premptively update the number of COUNT we will return. */
5050
*(COUNT) -= cando_count;
5151

52-
if( 1 == _elem->count ) { /* Everything is contiguous, handle it as a prologue */
52+
if( 1 == _elem->count ) { /* Everything is contiguous, handle it as the last contiguous piece */
5353
goto do_epilog;
5454
}
5555
if( 1 == _elem->blocklen ) { /* Do as many full blocklen as possible */
5656
for(; cando_count > 0; cando_count--) {
5757
OPAL_DATATYPE_SAFEGUARD_POINTER( _memory, blocklen_bytes, (CONVERTOR)->pBaseBuf,
5858
(CONVERTOR)->pDesc, (CONVERTOR)->count );
59-
DO_DEBUG( opal_output( 0, "unpack 2. memcpy( %p, %p, %lu ) => space %lu\n",
59+
DO_DEBUG( opal_output( 0, "unpack memcpy( %p, %p, %lu ) => space %lu [blen = 1]\n",
6060
(void*)_memory, (void*)_packed, (unsigned long)blocklen_bytes, (unsigned long)(*(SPACE) - (_packed - *(packed))) ); );
6161
MEMCPY_CSUM( _memory, _packed, blocklen_bytes, (CONVERTOR) );
6262
_packed += blocklen_bytes;
@@ -76,23 +76,21 @@ unpack_predefined_data( opal_convertor_t* CONVERTOR,
7676
* should be manipulated in the current call (this number is instead reflected on the
7777
* SPACE).
7878
*/
79-
do_now = do_now % _elem->blocklen; /* any partial elements ? */
80-
81-
if( 0 != do_now ) {
79+
if( 0 != (do_now = do_now % _elem->blocklen) ) { /* any partial elements ? */
8280
size_t left_in_block = do_now; /* left in the current blocklen */
83-
do_now = (do_now > cando_count ) ? cando_count : do_now;
81+
do_now = (do_now > cando_count) ? cando_count : do_now;
8482
do_now_bytes = do_now * opal_datatype_basicDatatypes[_elem->common.type]->size;
8583

8684
OPAL_DATATYPE_SAFEGUARD_POINTER( _memory, do_now_bytes, (CONVERTOR)->pBaseBuf,
8785
(CONVERTOR)->pDesc, (CONVERTOR)->count );
88-
DO_DEBUG( opal_output( 0, "unpack 1. memcpy( %p, %p, %lu ) => space %lu [prolog]\n",
86+
DO_DEBUG( opal_output( 0, "unpack memcpy( %p, %p, %lu ) => space %lu [prolog]\n",
8987
(void*)_memory, (void*)_packed, (unsigned long)do_now_bytes, (unsigned long)(*(SPACE)) ); );
9088
MEMCPY_CSUM( _memory, _packed, do_now_bytes, (CONVERTOR) );
91-
_memory += (ptrdiff_t)do_now_bytes;
92-
/* compensate if we just completed a blocklen */
93-
if( do_now == left_in_block )
94-
_memory += _elem->extent - blocklen_bytes;
9589
_packed += do_now_bytes;
90+
_memory += (ptrdiff_t)do_now_bytes;
91+
92+
if( do_now == left_in_block ) /* compensate if completed a blocklen */
93+
_memory += _elem->extent - blocklen_bytes;
9694
cando_count -= do_now;
9795
}
9896

0 commit comments

Comments
 (0)