Re: Question about DEC Alpha memory ordering

From: Andrea Parri
Date: Tue Feb 14 2017 - 15:13:15 EST


On Wed, Feb 15, 2017 at 08:26:46AM +1300, Michael Cree wrote:
> On Tue, Feb 14, 2017 at 12:35:58PM +0100, Andrea Parri wrote:
> > On Mon, Feb 13, 2017 at 01:24:36PM -0800, Paul E. McKenney wrote:
> > > ------------------------------------------------------------------------
> > >
> > > C auto/C-LB-LRW+OB-Ov
> > > (*
> > > * Result: Maybe
> > > * P0-P1 rf OB-Ov: Never->Maybe: Note lack of C11 guarantee, control dependency
> > > * P1 Ov,LRW: Note lack of C11 guarantee, control dependency
> > > *)
> > > {
> > > }
> > >
> > > P0(int *u0, int *x1)
> > > {
> > > r1 = READ_ONCE(*u0);
> > > smp_mb();
> > > WRITE_ONCE(*x1, 1);
> > > }
> > >
> > >
> > > P1(int *u0, int *x1)
> > > {
> > > r1 = READ_ONCE(*x1);
> > > WRITE_ONCE(*u0, r1);
> > > }
> > >
> > > exists
> > > (0:r1=1 /\ 1:r1=1)
> > >
> >
> > The (automatically generated) module for this test is at
> >
> > http://retis.sssup.it/~a.parri/lkmm/C-LB-LRW+OB-Ov.tgz ;
> >
> > the test is run by cat-ing /sys/kernel/litmus/p_count: this will execute
> > the thread bodies for "runs * size" iterations; results can be sentisive
> > to the "stride" and "affinity increment" parameters (c.f., the Makefile);
> > statistics for each experiments are printed on stdout.
>
> This is the test run on a 3-cpu ES45 with the settings in the Makefile:
>
> Test auto/LB-LRW+OB-Ov Allowed
> Histogram (2 states)
> 5913093 :> 0:r1=0; 1:r1=0;
> 4086907 :> 0:r1=0; 1:r1=1;
> No
> Witnesses
> Positive: 0 Negative: 10000000
> Condition exists (0:r1=1 /\ 1:r1=1) is NOT validated
> Observation auto/LB-LRW+OB-Ov Never 0 10000000
> Time auto/LB-LRW+OB-Ov 9.570
> Hash=200258693ffc841829310726a4a0b7e3
>
> How do we interpret these results?

Hi Michael. The log shows (together w/ other info.) an histogram

[Total count] :> [Final state]

where "Total count" is the number of times an execution of the test program
led to the associated "Final state", here represented by the final values
of the registers 0:r1, 1:r1.

The log also shows statistics relative to the final state specified by the
program's "exists" clause, here (0:r1=1 /\ 1:r1=1): this state was never
observed (Positive: 0) over a total of 10000000 iterations/executions.

Thank you for running the test and for sharing these results.

Andrea

>
> Cheers
> Michael.