![Page 1: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/1.jpg)
A CHR-Based Solver for Weak Memory Behaviors
CSTVA 2016 — Allan Blanchard1,2 Nikolai Kosmatov1 Frederic Loulergue2
1 CEA LIST - Software Reliability Laboratory2 Univ Orleans, INSA Centre Val de Loire, LIFO
![Page 2: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/2.jpg)
Sequential Consistency VS Weak Memory Models
Memory model
Reasoning about concurrencyMemory models define :
how threads interact with memoryin particular on shared data
They can be defined by :processor architectureslanguages
July 17th, 2016 — A.Blanchard — p. 2/19
![Page 3: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/3.jpg)
Sequential Consistency VS Weak Memory Models
Sequential Consistency
Lamport 1979The semantics of the parallel composition of two programs is givenby the interleavings of the executions of both programs.
A simple program x :=Ω; y :=Ω
Thread 0x := 1;r0 := y;
Thread 1y := 1;r1 := x;
Possible results :r0 = 1 ∧ r1 = 1r0 = Ω ∧ r1 = 1r0 = 1 ∧ r1 = Ω
Impossible result :r0 = Ω ∧ r1 = Ω
July 17th, 2016 — A.Blanchard — p. 3/19
![Page 4: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/4.jpg)
Sequential Consistency VS Weak Memory Models
Weak behaviors
Modern architecturesFor example, x86-TSO or ARM do not respect SC :
hard to ensure such synchronization in hardware,and far too costly.
Examples of weak behaviors
out-of-order execution,store buffering,speculative execution,...
July 17th, 2016 — A.Blanchard — p. 4/19
![Page 5: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/5.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0x := 1;r0 := y;
r0 =
Thread 1y := 1;r1 := x;
r1 =
Proc 0 : Store Buffer...
Proc 1 : Store Buffer...
⇓
Global Memory
⇓
... x = Ω y = Ω ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 6: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/6.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0−→ x := 1;
r0 := y;r0 =
Thread 1y := 1;r1 := x;
r1 =
Proc 0 : Store Buffer... x = 1 ...
Proc 1 : Store Buffer...
⇓
Global Memory
⇓
... x = Ω y = Ω ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 7: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/7.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0x := 1;r0 := y;
r0 =
Thread 1−→ y := 1;
r1 := x;r1 =
Proc 0 : Store Buffer... x = 1 ...
Proc 1 : Store Buffer... y = 1 ...
⇓
Global Memory
⇓
... x = Ω y = Ω ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 8: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/8.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0x := 1;
−→ r0 := y;r0 = Ω
Thread 1y := 1;r1 := x;
r1 =
Proc 0 : Store Buffer... x = 1 ...
Proc 1 : Store Buffer... y = 1 ...
⇓
Global Memory
⇓
... x = Ω y = Ω ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 9: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/9.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0x := 1;r0 := y;
r0 = Ω
Thread 1y := 1;
−→ r1 := x;r1 = Ω
Proc 0 : Store Buffer... x = 1 ...
Proc 1 : Store Buffer... y = 1 ...
⇓
Global Memory
⇓
... x = Ω y = Ω ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 10: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/10.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0x := 1;r0 := y;
r0 = Ω
Thread 1y := 1;r1 := x;
r1 = Ω
Proc 0 : Store Buffer... x = 1 ...
Proc 1 : Store Buffer... y = 1 ...
⇓
Global Memory
⇓
... x = Ω y = Ω ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 11: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/11.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0x := 1;r0 := y;
r0 = Ω
Thread 1y := 1;r1 := x;
r1 = Ω
Proc 0 : Store Buffer...
Proc 1 : Store Buffer... y = 1 ...
⇓ Global Memory
⇓
... x = 1 y = Ω ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 12: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/12.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0x := 1;r0 := y;
r0 = Ω
Thread 1y := 1;r1 := x;
r1 = Ω
Proc 0 : Store Buffer...
Proc 1 : Store Buffer...
⇓
Global Memory ⇓... x = 1 y = 1 ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 13: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/13.jpg)
Sequential Consistency VS Weak Memory Models
Example with store buffering
Thread 0x := 1;r0 := y;
r0 = Ω
Thread 1y := 1;r1 := x;
r1 = Ω
Proc 0 : Store Buffer...
Proc 1 : Store Buffer...
⇓
Global Memory
⇓
... x = 1 y = 1 ...
This behavior is allowed on ARM and TSO processors
July 17th, 2016 — A.Blanchard — p. 5/19
![Page 14: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/14.jpg)
Sequential Consistency VS Weak Memory Models
We need to understand weak behaviors
Reasoning about programsWe have more and more multi-core software but
it is hard to reason about themmost analysis techniques are not aware of weak behaviors
July 17th, 2016 — A.Blanchard — p. 6/19
![Page 15: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/15.jpg)
Sequential Consistency VS Weak Memory Models
Existing dedicated tools
CPPMem (Batty et al. 2010)Program executions under C++11 model
Herding cats (Alglave et al. 2014)Generic framework for weak behaviors
written in OCamlprovides a language to specify memory models
JMMSolve (Schrijvers 2004) based on CCMM (Saraswat 2004)Program executions under Java Memory Model
based on Concurrent Constraint-based Memory Machineswritten using Constraint Handling Rules (CHR)
July 17th, 2016 — A.Blanchard — p. 7/19
![Page 16: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/16.jpg)
A solver for weak memory behaviors
Prolog and CHR
PrologDeclarative language for logic programming
Constraint Handling RulesDeclarative language for constraint programming
maintains a store of constraints (∼ terms)handled by rules that will add or remove constraints
July 17th, 2016 — A.Blanchard — p. 8/19
![Page 17: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/17.jpg)
A solver for weak memory behaviors
Goals of our solver
To identify allowed executions
for a given parallel programaccording to a given memory model
Additional goals
possibility to add new memory modelssupport of specific instructions
July 17th, 2016 — A.Blanchard — p. 9/19
![Page 18: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/18.jpg)
A solver for weak memory behaviors
Basic relations
(ld , y , R0 = 1) (ld , x , R1 = 1)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
Program-Order : POCoherency-Order : COReads-From : RF
July 17th, 2016 — A.Blanchard — p. 10/19
![Page 19: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/19.jpg)
A solver for weak memory behaviors
Basic relations
(ld , y , R0 = 1) (ld , x , R1 = 1)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
Program-Order : POCoherency-Order : COReads-From : RF
July 17th, 2016 — A.Blanchard — p. 10/19
![Page 20: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/20.jpg)
A solver for weak memory behaviors
Basic relations
(ld , y , R0 = 1) (ld , x , R1 = 1)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
coco
Program-Order : POCoherency-Order : COReads-From : RF
July 17th, 2016 — A.Blanchard — p. 10/19
![Page 21: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/21.jpg)
A solver for weak memory behaviors
Basic relations
(ld , y , R0 = 1) (ld , x , R1 = 1)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
coco
rfrf
Program-Order : POCoherency-Order : COReads-From : RF
July 17th, 2016 — A.Blanchard — p. 10/19
![Page 22: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/22.jpg)
A solver for weak memory behaviors
Chosen approach
Generate all candidate executionsAn execution is represented by ordering relations :
CO: for each location l , a total ordering of every store to lRF: for each load, a store having written the value being readwe combine all permutations of CO and RF using backtracking
Filter out forbidden executionsapply model rules to deduce more ordering relationsincoherent execution: an action must happen before itself(which means that some relations exhibits a cycle)
July 17th, 2016 — A.Blanchard — p. 11/19
![Page 23: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/23.jpg)
A solver for weak memory behaviors
Express and derive relations with CHR
Relation between 2 instructions CHR constraint(st, x , Ω)
CO−−→ (st, x , 1) co((st, x, undefined), (st, x, 1))
(st, x , 2)RF−−→ (ld , x , R) rf((st, x, 2), (ld, x, 2))
CHR rules to derive new relations :rf(ST, LD), co(ST, ST2)⇒fr(LD, ST2).
fr(LD, ST2), co(ST2, ST3)⇒fr(LD, ST3).
ST
LD
ST 2
ST 3
rfco
co
fr
fr
July 17th, 2016 — A.Blanchard — p. 12/19
![Page 24: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/24.jpg)
A solver for weak memory behaviors
Express and derive relations with CHR
Relation between 2 instructions CHR constraint(st, x , Ω)
CO−−→ (st, x , 1) co((st, x, undefined), (st, x, 1))
(st, x , 2)RF−−→ (ld , x , R) rf((st, x, 2), (ld, x, 2))
CHR rules to derive new relations :rf(ST, LD), co(ST, ST2)⇒fr(LD, ST2).
fr(LD, ST2), co(ST2, ST3)⇒fr(LD, ST3).
ST
LD
ST 2
ST 3
rfco
co
fr
fr
July 17th, 2016 — A.Blanchard — p. 12/19
![Page 25: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/25.jpg)
A solver for weak memory behaviors
Express and derive relations with CHR
Relation between 2 instructions CHR constraint(st, x , Ω)
CO−−→ (st, x , 1) co((st, x, undefined), (st, x, 1))
(st, x , 2)RF−−→ (ld , x , R) rf((st, x, 2), (ld, x, 2))
CHR rules to derive new relations :rf(ST, LD), co(ST, ST2)⇒fr(LD, ST2).
fr(LD, ST2), co(ST2, ST3)⇒fr(LD, ST3).
ST
LD
ST 2
ST 3
rfco
co
fr
fr
July 17th, 2016 — A.Blanchard — p. 12/19
![Page 26: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/26.jpg)
A solver for weak memory behaviors
Detection of incoherent execution
Reminder : incoherent execution = cycle in the perserved relations
:- chr_constraint r/2, tc/2, cycle /1.
tc(B,E) \ tc(B,E) <=>true.
tc(B,E), r(E,B) <=>cycle(B).
tc(B,E), r(E,N) ==>inf(B,N) | tc(B,N).
r(I,J) ==>inf(I,J) | tc(I,J).
1
2
3
4
5
6
7
RR
RR
R
R
R
R
July 17th, 2016 — A.Blanchard — p. 13/19
![Page 27: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/27.jpg)
A solver for weak memory behaviors
Detection of incoherent execution
Reminder : incoherent execution = cycle in the perserved relations
:- chr_constraint r/2, tc/2, cycle /1.
tc(B,E) \ tc(B,E) <=>true.
tc(B,E), r(E,B) <=>cycle(B).
tc(B,E), r(E,N) ==>inf(B,N) | tc(B,N).
r(I,J) ==>inf(I,J) | tc(I,J).
1
2
3
4
5
6
7
RR
RR
R
R
R
R
R
R
R
R
R
July 17th, 2016 — A.Blanchard — p. 13/19
![Page 28: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/28.jpg)
A solver for weak memory behaviors
Detection of incoherent execution
Reminder : incoherent execution = cycle in the perserved relations
:- chr_constraint r/2, tc/2, cycle /1.
tc(B,E) \ tc(B,E) <=>true.
tc(B,E), r(E,B) <=>cycle(B).
tc(B,E), r(E,N) ==>inf(B,N) | tc(B,N).
r(I,J) ==>inf(I,J) | tc(I,J).
1
2
3
4
5
6
7
RR
RR
R
R
R
R
RR
R
July 17th, 2016 — A.Blanchard — p. 13/19
![Page 29: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/29.jpg)
A solver for weak memory behaviors
Detection of incoherent execution
Reminder : incoherent execution = cycle in the perserved relations
:- chr_constraint r/2, tc/2, cycle /1.
tc(B,E) \ tc(B,E) <=>true.
tc(B,E), r(E,B) <=>cycle(B).
tc(B,E), r(E,N) ==>inf(B,N) | tc(B,N).
r(I,J) ==>inf(I,J) | tc(I,J).
1
2
3
4
5
6
7
RR
RR
R
R
R
R
R
R
July 17th, 2016 — A.Blanchard — p. 13/19
![Page 30: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/30.jpg)
A solver for weak memory behaviors
Detection of incoherent execution
Reminder : incoherent execution = cycle in the perserved relations
:- chr_constraint r/2, tc/2, cycle /1.
tc(B,E) \ tc(B,E) <=>true.
tc(B,E), r(E,B) <=>cycle(B).
tc(B,E), r(E,N) ==>inf(B,N) | tc(B,N).
r(I,J) ==>inf(I,J) | tc(I,J).
1
2
3
4
5
6
7
RR
RR
R
R
R
R
R
R
R
July 17th, 2016 — A.Blanchard — p. 13/19
![Page 31: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/31.jpg)
A solver for weak memory behaviors
Detection of incoherent execution
Reminder : incoherent execution = cycle in the perserved relations
:- chr_constraint r/2, tc/2, cycle /1.
tc(B,E) \ tc(B,E) <=>true.
tc(B,E), r(E,B) <=>cycle(B).
tc(B,E), r(E,N) ==>inf(B,N) | tc(B,N).
r(I,J) ==>inf(I,J) | tc(I,J).
1
2
3
4
5
6
7
RR
RR
R
R
R
R
R
R
R
R
July 17th, 2016 — A.Blanchard — p. 13/19
![Page 32: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/32.jpg)
A solver for weak memory behaviors
Detection of incoherent execution
Reminder : incoherent execution = cycle in the perserved relations
:- chr_constraint r/2, tc/2, cycle /1.
tc(B,E) \ tc(B,E) <=>true.
tc(B,E), r(E,B) <=>cycle(B).
tc(B,E), r(E,N) ==>inf(B,N) | tc(B,N).
r(I,J) ==>inf(I,J) | tc(I,J).
1
2
3
4
5
6
7
RR
RR
R
R
R
R
R
R
R
R
R
July 17th, 2016 — A.Blanchard — p. 13/19
![Page 33: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/33.jpg)
A solver for weak memory behaviors
Definition of a model : SC
co(I,J) ==> sc(I,J).rf(I,J) ==> sc(I,J).fr(I,J) ==> sc(I,J).po(I,J) ==> sc(I,J).
(ld , y , R0 = Ω) (ld , x , R1 = Ω)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
coco
rf
rf
frfr
July 17th, 2016 — A.Blanchard — p. 14/19
![Page 34: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/34.jpg)
A solver for weak memory behaviors
Definition of a model : SC
co(I,J) ==> sc(I,J).rf(I,J) ==> sc(I,J).fr(I,J) ==> sc(I,J).po(I,J) ==> sc(I,J).
(ld , y , R0 = Ω) (ld , x , R1 = Ω)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
coco
rf
rf
frfr
July 17th, 2016 — A.Blanchard — p. 14/19
![Page 35: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/35.jpg)
A solver for weak memory behaviors
Definition of a model: TSO (simplified)
ppo ((st ,_,_), (ld ,_,_)) <=>true.
ipo(I,J) ==> ppo(I,J).
bar(I,J) ==> tso(I,J).ppo(I,J) ==> tso(I,J).rf(I,J) ==> tso(I,J).co(I,J) ==> tso(I,J).fr(I,J) ==> tso(I,J).
(ld , y , R0 = Ω) (ld , x , R1 = Ω)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
coco
rf
rf
frfr
July 17th, 2016 — A.Blanchard — p. 15/19
![Page 36: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/36.jpg)
A solver for weak memory behaviors
Definition of a model: TSO (simplified)
ppo ((st ,_,_), (ld ,_,_)) <=>true.
ipo(I,J) ==> ppo(I,J).
bar(I,J) ==> tso(I,J).ppo(I,J) ==> tso(I,J).rf(I,J) ==> tso(I,J).co(I,J) ==> tso(I,J).fr(I,J) ==> tso(I,J).
(ld , y , R0 = Ω) (ld , x , R1 = Ω)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
coco
rf
rf
frfr
July 17th, 2016 — A.Blanchard — p. 15/19
![Page 37: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/37.jpg)
A solver for weak memory behaviors
Definition of a model: TSO (simplified)
ppo ((st ,_,_), (ld ,_,_)) <=>true.
ipo(I,J) ==> ppo(I,J).
bar(I,J) ==> tso(I,J).ppo(I,J) ==> tso(I,J).rf(I,J) ==> tso(I,J).co(I,J) ==> tso(I,J).fr(I,J) ==> tso(I,J).
(ld , y , R0 = Ω) (ld , x , R1 = Ω)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
coco
rf
rf
frfr
July 17th, 2016 — A.Blanchard — p. 15/19
![Page 38: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/38.jpg)
A solver for weak memory behaviors
Definition of a model: TSO (simplified)
ppo ((st ,_,_), (ld ,_,_)) <=>true.
ipo(I,J) ==> ppo(I,J).
bar(I,J) ==> tso(I,J).ppo(I,J) ==> tso(I,J).rf(I,J) ==> tso(I,J).co(I,J) ==> tso(I,J).fr(I,J) ==> tso(I,J).
(ld , y , R0 = Ω) (ld , x , R1 = Ω)
(st, x , 1) (st, y , 1)
(st, y , Ω)
(st, x , Ω)
po po
coco
rf
rf
frfr
barrier barrier
July 17th, 2016 — A.Blanchard — p. 15/19
![Page 39: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/39.jpg)
Results
Implemented Memory Models
SCTSOPSOARM (Almost finished)
July 17th, 2016 — A.Blanchard — p. 16/19
![Page 40: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/40.jpg)
Results
Correctness tests
Program samples from HerdWe tested the implementation on 18 examples of litmus programs.
message passing,message passing by address passing,basic uniproc relations,store buffering,...
We observe the same results found by Herd.http://virginia.cs.ucl.ac.uk/herd/
July 17th, 2016 — A.Blanchard — p. 17/19
![Page 41: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/41.jpg)
Results
Performance tests
Multiple message passing
Example Model #exec Herd CHR Solver
MP3
Generic 147 436 1.2s 3.3sPSO 2 258 3.8s 6.4sTSO 800 4.1s 3.2sSC 678 5.5s 3.3s
MP4
Generic 255 000 000 1405s > 1hPSO 516 030 > 1h 2796sTSO 96 498 > 1h 752sSC 81 882 > 1h 747s
Early pruning makes the solver efficient for “long” programs.
July 17th, 2016 — A.Blanchard — p. 18/19
![Page 42: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/42.jpg)
Conclusion and Future Work
Conclusion
A CHR based solver for weak memory behaviors
currently for SC, TSO and PSOeasy to use and to extend for new memory modelsit was not so hard to implementdespite the (awful) complexity, execution time is not so bad
Future workFeatures :
finalize ARMadd read-modify-write operations and branching
Evaluate on further benchmarks
July 17th, 2016 — A.Blanchard — p. 19/19
![Page 43: A CHR-Based Solver for Weak Memory Behaviors - CSTVA 2016 · A CHR-Based Solver for Weak Memory Behaviors CSTVA 2016 — Allan Blanchard 1,2 Nikolai Kosmatov Fr´ed´eric Loulergue](https://reader034.vdocument.in/reader034/viewer/2022042712/5fa11f150a2e8f10542b0556/html5/thumbnails/43.jpg)
Thank you ! Questions ?
Commissariat a l’energie atomique et aux energies alternativesCEA Tech ListCentre de Saclay — 91191 Gif-sur-Yvette Cedexwww- list.cea.fr
Etablissement public a caractere industriel et commercial — RCS Paris B 775 685 019