Correctly (I hope) compute the contiguous flag. There is still a big question about the overlap flag:
should I compute it here with les precision or should be done in the commit phase. Anyway correctly detecting the overlap is a difficult problem. This commit was SVN r4394.
Этот коммит содержится в:
родитель
194f764ad2
Коммит
f24afe3bf8
@ -165,7 +165,8 @@ int ompi_ddt_add( dt_desc_t* pdtBase, const dt_desc_t* pdtAdd,
|
||||
/* should I add some space until the extent of this datatype ? */
|
||||
}
|
||||
|
||||
old_true_ub = pdtBase->true_ub;
|
||||
if( 0 == pdtBase->nbElems ) old_true_ub = disp;
|
||||
else old_true_ub = pdtBase->true_ub;
|
||||
pdtBase->size += count * pdtAdd->size;
|
||||
pdtBase->true_lb = LMIN( pdtBase->true_lb, pdtAdd->true_lb + disp );
|
||||
pdtBase->true_ub = LMAX( pdtBase->true_ub,
|
||||
@ -177,7 +178,7 @@ int ompi_ddt_add( dt_desc_t* pdtBase, const dt_desc_t* pdtAdd,
|
||||
* In other words to avoid having internal gaps between elements. And the datatypes
|
||||
* should ALWAYS follow each other.
|
||||
*/
|
||||
if( disp != pdtBase->true_ub ) { /* add the initial gap */
|
||||
if( disp != old_true_ub ) { /* is there a gap between the 2 datatypes ? */
|
||||
if( disp < old_true_ub ) pdtBase->flags |= DT_FLAG_OVERLAP;
|
||||
UNSET_CONTIGUOUS_FLAG(pdtBase->flags);
|
||||
} else {
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user