That means the lb and ub defined in MPI-1.1 are strong or sticky.
But MPI-1.1 also has the foll. rule, pg 71, ln. 19-21:
"An entry of type ub can be deleted if there is another entry of type
ub with higher displacement; an entry of type lb can be deleted if
there is another entry of type lb with a lower displacement."
By this rule, in the above example, the ub should be at 104, just after
the int.
Or are we modifying an MPI-1 rule over here?
> Even if I create T2 with an MPI_UB at 10 I still get the UB at 16
> in my resulting T2. The MPI_UB in T1S is sticky.
To do this in MPI-1, you would have to use MPI_Type_struct with T2 as
one datatype and MPI_UB as the other. And then again the above rule
should apply, causing ub to remain at 104.
> If I make T1W which has a weak UB at 16 and an MPI_INT at 100 then any
> use of T1W in communication, IO or type construction contributes that UB
> of 16 with the same force as a UB which comes from data. Therefor, if I
> make T2 with 2*T1W at 0 and an MPI_INT at 8, the UB of T2 is 32. If I
> make T2 with 2*T1W at 0 and an MPI_INT at 100, the T2 UB is 104.
If this is what is intended, it is a new rule and must be clearly
explained in the document.
In my opinion, this weak ub is behaving stronger than a strong ub of
MPI-1, particularly in the second-last sentence of the above paragraph.
> Any MPI_TYPE_STRUCT call which uses MPI_LB or MPI_UB overrides a weak LB
> or UB and it makes no difference whether that weak LB/UB came from data
> locations or MPI_TYPE_RESIZE calls. The strong MPI_LB/UB is there in
> the new datatype and only an MPI_TYPE_RESIZE call or a lower-MPI_LB or
> higher-MPI_UB can knock it loose.
This means...
MPI_TYPE_STRUCT introduces a strong lb/ub which overrides a weak lb/ub.
MPI_TYPE_RESIZE introduces a weak lb/ub which can knock loose a strong
lb/ub. Seems contradictory.
> I think this view is consistent with the general usefulness of pseudo
> UB, LB and extent. In the rare conditions where the user really needs
> to get back to LB,UB and extent that are based on actual data positions
> he can call MPI_GET_TRUE_EXTENT and then use MPI_TYPE_RESIZE.
The source of my confusion about sticky/not-sticky, strong/weak is the
above-mentioned rule in MPI-1, which leads me to believe that lbs and
ubs in MPI-1 are themselves not sticky to begin with.
Rajeev