Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling...
Transcript of Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling...
![Page 1: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/1.jpg)
Optimizing theAutomated Programming StackJames Bornholt University of Washington
![Page 2: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/2.jpg)
Software is everywhere
![Page 3: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/3.jpg)
Bugs are everywhere
![Page 4: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/4.jpg)
Bugs are everywhere
![Page 5: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/5.jpg)
Automated programming tools
VerifierProgram
Specification✅
❌ + test caseLanguage
![Page 6: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/6.jpg)
Automated programming tools
VerifierProgram
Specification✅
❌ + test case
SynthesizerSpecification✅
❌
+ program
Language
Language
![Page 7: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/7.jpg)
Automated programming successes
Verified operating systems
[Nelson et al, SOSP’17]
Synthesized network configs
[McClurg et al, PLDI’15]
Verified SQL optimizers
[Chu et al, VLDB’18]
Synthesized crypto primitives
[Erbsen et al, Oakland’19]
Synthesized biology experiments
[Köksal et al, POPL’13]
Synthesized memory models
[Bornholt et al, PLDI’17]
Synthesized educational models
[Butler et al, VMCAI’18]
![Page 8: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/8.jpg)
Challenges in automated programming
Intractability SpecificationMost problems in automated programming are intractable (many undecidable).
Automated programming requiresa specification, which is often difficult to construct and audit.
![Page 9: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/9.jpg)
Challenges in automated programming
Intractability SpecificationMost problems in automated programming are intractable (many undecidable).
Automated programming requiresa specification, which is often difficult to construct and audit.
Domain specializationSpecialization reduces the size of the search space, eliminating irrelevant programs/behaviors.
Specialization allows for concise and expressive specificationsthat capture programmer intent.
![Page 10: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/10.jpg)
Domain specialization
Automated programming stack
Domain-specific tools
![Page 11: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/11.jpg)
Domain specialization
Automated programming stack
SAT/SMT solving improvements in scale and expressiveness
Domain-specific tools
![Page 12: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/12.jpg)
Domain specialization
Automated programming stack
Symbolic evaluation algorithms to translate programs to SAT/SMT
SAT/SMT solving improvements in scale and expressiveness
Domain-specific tools
![Page 13: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/13.jpg)
Domain specialization
Automated programming stack
Solver-aided languages front-end abstractions for verification/synthesis
Symbolic evaluation algorithms to translate programs to SAT/SMT
SAT/SMT solving improvements in scale and expressiveness
Domain-specific tools
![Page 14: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/14.jpg)
Automated programming stack
Solver-aided languages front-end abstractions for verification/synthesis
Symbolic evaluation algorithms to translate programs to SAT/SMT
SAT/SMT solving improvements in scale and expressiveness
Domain-specific tools
![Page 15: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/15.jpg)
New abstractions and tools can empower programmers to build specialized automated
programming tools that improve software reliability.
![Page 16: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/16.jpg)
New abstractions and tools can empower programmers to build specialized automated
programming tools that improve software reliability.
MemSynth [PLDI’17]: an automated tool for synthesizing memory consistency models
Ferrite [ASPLOS’16]: a tool for synthesizing crash-safe file system code
![Page 17: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/17.jpg)
New abstractions and tools can empower programmers to build specialized automated
programming tools that improve software reliability.
MemSynth [PLDI’17]: an automated tool for synthesizing memory consistency models
Metasketches [POPL’16]: a strategy abstrac`on for synthesis problems
SymPro [OOPSLA’18]: a technique for systema`cally building scalable tools
Ferrite [ASPLOS’16]: a tool for synthesizing crash-safe file system code
![Page 18: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/18.jpg)
New abstractions and tools can empower programmers to build specialized automated
programming tools that improve software reliability.
MemSynth [PLDI’17]: an automated tool for synthesizing memory consistency models
Metasketches [POPL’16]: a strategy abstrac`on for synthesis problems
SymPro [OOPSLA’18]: a technique for systema`cally building scalable tools
Ferrite [ASPLOS’16]: a tool for synthesizing crash-safe file system code
![Page 19: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/19.jpg)
Automated tools are worth building The case of memory models [PLDI’17]
Building them can be made systematic Symbolic profiling [OOPSLA’18]
The future is more automation Automating the automated programming stack
![Page 20: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/20.jpg)
Automated tools are worth building The case of memory models [PLDI’17]
Building them can be made systematic Symbolic profiling [OOPSLA’18]
The future is more automation Automating the automated programming stack
![Page 21: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/21.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
All variables initialized to 0
![Page 22: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/22.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello?
All variables initialized to 0
![Page 23: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/23.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello? 3 41 2
All variables initialized to 0
![Page 24: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/24.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello?goodbye?
3 41 2
All variables initialized to 0
![Page 25: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/25.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello?goodbye?
3 41 2
1 23 4
All variables initialized to 0
![Page 26: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/26.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello?goodbye?nothing?
3 41 2
1 23 4
All variables initialized to 0
![Page 27: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/27.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello?goodbye?nothing?
3 41 2
1 23 4
3 41 2
All variables initialized to 0
![Page 28: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/28.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello?goodbye?nothing?both?
3 41 2
1 23 4
3 41 2
All variables initialized to 0
![Page 29: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/29.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello?goodbye?nothing?both?
3 41 2
1 23 4
3 41 2
No! (sequential consistency)
All variables initialized to 0
![Page 30: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/30.jpg)
Memory models define the memory ordering behavior of multiprocessors
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
Can this print… hello?goodbye?nothing?both?
3 41 2
1 23 4
3 41 2
No! (sequential consistency)
Yeah! We wanna go fast!
All variables initialized to 0
![Page 31: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/31.jpg)
Memory models define the memory ordering behavior of multiprocessors
…correctness of my compiler…
Compiler writers#
…rules to verify against…
Verifica`on tools✅
…possible low-level behaviors…
Kernel/library developers$
![Page 32: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/32.jpg)
Memory models define the memory ordering behavior of multiprocessors
…correctness of my compiler…
Compiler writers#
…rules to verify against…
Verifica`on tools✅
…possible low-level behaviors…
Kernel/library developers$
Litmus tests and prose
![Page 33: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/33.jpg)
Memory models define the memory ordering behavior of multiprocessors
…correctness of my compiler…
Compiler writers#
…rules to verify against…
Verifica`on tools✅
…possible low-level behaviors…
Kernel/library developers$
Litmus tests and prose
∀∃ ∈
∧
∨
∩∪⊂
⋈⇒
Formalspecifica`ons
![Page 34: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/34.jpg)
Memory models define the memory ordering behavior of multiprocessors
…correctness of my compiler…
Compiler writers#
…rules to verify against…
Verifica`on tools✅
…possible low-level behaviors…
Kernel/library developers$
Litmus tests and prose
∀∃ ∈
∧
∨
∩∪⊂
⋈⇒
Formalspecifica`ons
x86 [Sewell et al, CACM’10]
PowerPC [Alglave et al, CAV’10, etc]
ARM [Flur et al, POPL’16]
![Page 35: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/35.jpg)
MemSynth: automated programming for memory consistency models
Litmus tests and prose
∀∃ ∈
∧
∨
∩∪⊂
⋈⇒
Formalspecifica`ons
![Page 36: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/36.jpg)
MemSynth: automated programming for memory consistency models
Litmus tests and prose
∀∃ ∈
∧
∨
∩∪⊂
⋈⇒
Formalspecifica`ons
Synthesize specifica`ons from litmus tests
![Page 37: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/37.jpg)
MemSynth: automated programming for memory consistency models
Litmus tests and prose
∀∃ ∈
∧
∨
∩∪⊂
⋈⇒
Formalspecifica`ons
Synthesize specifica`ons from litmus tests
Detect ambigui`es in synthesized models
![Page 38: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/38.jpg)
MemSynth: automated programming for memory consistency models
Litmus tests and prose
∀∃ ∈
∧
∨
∩∪⊂
⋈⇒
Formalspecifica`ons
Synthesize specifica`ons from litmus tests
Detect ambigui`es in synthesized models
x86: 2 seconds PowerPC: 12 seconds
x86: 4 ambigui`es PowerPC: 9 ambigui`es
![Page 39: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/39.jpg)
MemSynth: automated programming for memory consistency models
Litmus tests and prose
∀∃ ∈
∧
∨
∩∪⊂
⋈⇒
Formalspecifica`ons
Litmus testsas rela`ons
Memory models as constraints
Synthesis via sketches
1 2 3
![Page 40: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/40.jpg)
Litmus tests as relations
X = 1 Y = 1if Y == 0: print “hello”
if X == 0: print “goodbye”
Thread 1 Thread 2
1
2
3
4
All variables initialized to 0
![Page 41: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/41.jpg)
Litmus tests as relations
X = 1 Y = 1r0 = Y r1 = X
Thread 1 Thread 2
1
2
3
4
All variables initialized to 0
![Page 42: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/42.jpg)
Litmus tests as relations
X = 1 Y = 1r0 = Y r1 = X
Thread 1 Thread 2
1
2
3
4
All variables initialized to 0
Encode programs and behaviors as relations in relational logic(like Alloy)
![Page 43: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/43.jpg)
Litmus tests as relations
X = 1 Y = 1r0 = Y r1 = X
Thread 1 Thread 2
1
2
3
4
All variables initialized to 0
Encode programs and behaviors as relations in relational logic(like Alloy)
Program relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order: (a,b) ∈ po if b is aoer a on the same thread
![Page 44: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/44.jpg)
Litmus tests as relations
X = 1 Y = 1r0 = Y r1 = X
Thread 1 Thread 2
1
2
3
4
All variables initialized to 0
Encode programs and behaviors as relations in relational logic(like Alloy)
Program relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order: (a,b) ∈ po if b is aoer a on the same thread
Execution relations describe dynamic behavior:
rf = {( , ), ( , )}2 3 4 1
Reads-from: (r,w) ∈ rf if r reads the value wripen by w
![Page 45: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/45.jpg)
Litmus tests as relations
X = 1 Y = 1r0 = Y r1 = X
Thread 1 Thread 2
1
2
3
4
All variables initialized to 0
Encode programs and behaviors as relations in relational logic(like Alloy)
Program relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order: (a,b) ∈ po if b is aoer a on the same thread
Execution relations describe dynamic behavior:
rf = {( , ), ( , )}2 3 4 1
Reads-from: (r,w) ∈ rf if r reads the value wripen by w
![Page 46: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/46.jpg)
Memory models as relational constraintsProgram relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order
Execution relations describe dynamic behavior:
rf = {( , ), ( , )}2 3 4 1
Reads-from
A memory model constrains the allowed executions of a program
Written as a predicate in relational logic
![Page 47: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/47.jpg)
Memory models as relational constraintsProgram relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order
Execution relations describe dynamic behavior:
rf = {( , ), ( , )}2 3 4 1
Reads-from
A memory model constrains the allowed executions of a program
Written as a predicate in relational logic
M(T, E) ≜
![Page 48: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/48.jpg)
Memory models as relational constraintsProgram relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order
Execution relations describe dynamic behavior:
rf = {( , ), ( , )}2 3 4 1
Reads-from
A memory model constrains the allowed executions of a program
Written as a predicate in relational logic
M(T, E) ≜
(&& (&& (&& (in rf (& (-> Writes Reads) (join loc (~ loc)) (join data (~ data)))) (no (- (join rf (~ rf)) iden)) (all ((r4 (- Reads (join Writes rf)))) (= (join r4 data) Zero))) (&& (in ws (& (-> Writes Writes) (join loc (~ loc)))) (no (& iden ws)) (in (join ws ws) ws) (all ((r5 Writes)) (all ((r6 (- (& Writes (join loc (join r5 loc))) r5))) (or (in (-> r5 r6) ws) (in (-> r6 r5) ws)))) (in ws (join loc (~ loc))))) (no (& (^ (+ (+ rf ws (+ (join (~ rf) ws) (& (-> (- Reads (join Writes rf)) Writes) (join loc (~ loc))))) (& po (join loc (~ loc))))) iden)) (all ((r7 Writes)) (=> (&& (in r7 (- (join univ ws) (join ws univ))) (some (join (join r7 loc) finalValue))) (= (join r7 data) (join (join r7 loc) finalValue)))) (no (& (^ (+ (& po dp) ws (+ (join (~ rf) ws) (& (-> (- Reads (join Writes rf)) Writes) (join loc (~ loc)))) (-> none none) (+ (^ (+ (+ (join (:> po Syncs) po) (join (join (:> po Syncs) po) rf)) (join rf (join (:> po Syncs) po)))) (^ (+ (+ (& (join (:> po Lwsyncs) po) (+ (-> Writes Writes) (-> Reads MemoryEvent))) (:> (join rf (& (join (:> po Lwsyncs) po) (+ (-> Writes Writes) (-> Reads MemoryEvent)))) Writes)) (<: Reads (join (& (join (:> po Lwsyncs) po) (+ (-> Writes Writes) (-> Reads MemoryEvent))) rf))))))) iden)))
(no (& (^ (+ po rf)) iden))
![Page 49: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/49.jpg)
Memory models as relational constraintsProgram relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order
Execution relations describe dynamic behavior:
rf = {( , ), ( , )}2 3 4 1
Reads-from
A memory model constrains the allowed executions of a program
Written as a predicate in relational logic
M(T, E) ≜ (no (& (^ (+ po rf)) iden))
![Page 50: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/50.jpg)
Memory models as relational constraintsProgram relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order
Execution relations describe dynamic behavior:
rf = {( , ), ( , )}2 3 4 1
Reads-from
A memory model constrains the allowed executions of a program
Written as a predicate in relational logic
M(T, E) ≜ (no (& (^ (+ po rf)) iden))Constraining the possible values of rf…
…by forbidding cycles involving rf ∪ po
![Page 51: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/51.jpg)
Memory models as relational constraintsProgram relations extracted from program text:
po = {( , ), ( , )}1 2 3 4
Program order
Execution relations describe dynamic behavior:
rf = {( , ), ( , )}2 3 4 1
Reads-from
A memory model constrains the allowed executions of a program
Written as a predicate in relational logic
M(T, E) ≜ (no (& (^ (+ po rf)) iden))Constraining the possible values of rf…
…by forbidding cycles involving rf ∪ po
A memory model allows a test T if there exists an execu`on E that sa`sfies the predicate
![Page 52: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/52.jpg)
(no (& (^ (+ po rf)) iden))
Synthesis from a memory model sketch
M(T, E) ≜
![Page 53: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/53.jpg)
(no (& (^ (+ po rf)) iden))
Synthesis from a memory model sketch
M(T, E) ≜ (no (& (^ (+ ?? ??)) iden))Expression holes for a synthesizer to complete
![Page 54: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/54.jpg)
(no (& (^ (+ po rf)) iden))
Synthesis from a memory model sketch
M(T, E) ≜ (no (& (^ (+ ?? ??)) iden))po rf po + rf po & rf po - rf …
Expression holes for a synthesizer to complete
![Page 55: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/55.jpg)
(no (& (^ (+ po rf)) iden))
Synthesis from a memory model sketch
M(T, E) ≜ (no (& (^ (+ ?? ??)) iden))po rf po + rf po & rf po - rf …
Expression holes for a synthesizer to complete
A sketch specifies things we know (e.g., want a happens-before ordering)…
![Page 56: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/56.jpg)
(no (& (^ (+ po rf)) iden))
Synthesis from a memory model sketch
M(T, E) ≜ (no (& (^ (+ ?? ??)) iden))po rf po + rf po & rf po - rf …
Expression holes for a synthesizer to complete
A sketch specifies things we know (e.g., want a happens-before ordering)…
…and defines the shape of the parts we don’t know
![Page 57: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/57.jpg)
Memory model frameworks
(no (& (^ (+ ws rf ppo grf)) iden))
[Alglave et al, CAV’10]
M(T, E) ≜
![Page 58: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/58.jpg)
Preserved program order: same-thread reorderings
Memory model frameworks
(no (& (^ (+ ws rf ppo grf)) iden))
[Alglave et al, CAV’10]
Global reads-from: inter-thread reorderings
M(T, E) ≜
![Page 59: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/59.jpg)
Preserved program order: same-thread reorderings
Memory model frameworks
(no (& (^ (+ ws rf ppo grf)) iden))
[Alglave et al, CAV’10]
Global reads-from: inter-thread reorderings
Sequential consistency
Total storeorder (x86)
po rf
po - (Wr→Rd) rf & SameThd
M(T, E) ≜
![Page 60: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/60.jpg)
Preserved program order: same-thread reorderings
Memory model frameworks
(no (& (^ (+ ws rf ppo grf)) iden))
[Alglave et al, CAV’10]
Global reads-from: inter-thread reorderings
Sequential consistency
Total storeorder (x86)
po rf
po - (Wr→Rd) rf & SameThd
M(T, E) ≜ ?? ??
![Page 61: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/61.jpg)
Ocelot DSL for relational logic with holes
M(T, E) ≜
Ocelot embeds rela`onal logic in the RoseZe solver-aided language [Torlak & Bodik 2014]
Also in use for SQL query synthesis and protocol reasoning
http://ocelot.tools
(no (& (^ (+ ws rf ppo grf)) iden))?? ??
Expression holes for a synthesizer to complete
![Page 62: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/62.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsSynth Completed memory model M
Memory model sketch M̂
![Page 63: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/63.jpg)
The synthesis query
Synth
x86
53
2 allowed tests
1 2 4 6
7 8 9 10
8 forbidden tests
Total store order
Memory model sketch M̂
![Page 64: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/64.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsSynth Completed memory model M
Memory model sketch M̂
![Page 65: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/65.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. M allows T
![Page 66: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/66.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. M allows T
∃ M. ∀ T∈T-. M forbids T
![Page 67: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/67.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. M allows T
∃ M. ∀ T∈T-. M forbids T
Standard exists-forall quan`fier papern for synthesis
![Page 68: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/68.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. M allows T
∃ M. ∀ T∈T-. M forbids T
M allows T: ∃ E. M(T, E)Standard exists-forall quan`fier
papern for synthesis
![Page 69: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/69.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. ∃ E. M(T,E)
∃ M. ∀ T∈T-. ∀ E. ¬M(T,E)
M allows T: ∃ E. M(T, E)Standard exists-forall quan`fier
papern for synthesis
![Page 70: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/70.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. ∃ E. M(T,E)
∃ M. ∀ T∈T-. ∀ E. ¬M(T,E)
M allows T: ∃ E. M(T, E)
Higher-order quan`fica`on over rela`ons! 😱
Standard exists-forall quan`fier papern for synthesis
![Page 71: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/71.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. ∃ E. M(T,E)
∃ M. ∀ T∈T-. ∀ E. ¬M(T,E)
M allows T: ∃ E. M(T, E)
![Page 72: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/72.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. ∃ E. M(T,E)
∃ M. ∀ T∈T-. ∀ E. ¬M(T,E)
M allows T: ∃ E. M(T, E)
Handled by a quan`fied boolean formula (QBF) solver
![Page 73: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/73.jpg)
The synthesis query
Allowed litmus tests
Forbidden litmus testsMemory model M
Memory model sketch M̂
∃ M. ∀ T∈T+. ∃ E. M(T,E)
∃ M. ∀ T∈T-. ∀ E. ¬M(T,E)
M allows T: ∃ E. M(T, E)
Handled by a quan`fied boolean formula (QBF) solver
Handled by incremental synthesis engine
![Page 74: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/74.jpg)
Incremental synthesis
Allowed litmus tests
Forbidden litmus tests
Synth T T T T T T T T
T T T T T T T T
T1
T2
![Page 75: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/75.jpg)
T T T T T
Incremental synthesis
Allowed litmus tests
Forbidden litmus tests
Synth T T T T T T T T
T T T T T T T T
T1 T2
![Page 76: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/76.jpg)
T T T T T
Incremental synthesis
Allowed litmus tests
Forbidden litmus tests
Synth T T T T T T T T
T T T T T T T T
T1 T2
Handled by a quan`fied boolean formula (QBF) solver
![Page 77: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/77.jpg)
T T T T T
Incremental synthesis
Allowed litmus tests
Forbidden litmus tests
Synth T T T T T T T T
T T T T T T T T
T1 T2
M’
Handled by a quan`fied boolean formula (QBF) solver
![Page 78: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/78.jpg)
T T T T T
Incremental synthesis
Allowed litmus tests
Forbidden litmus tests
Synth T T T T T T T T
T T T T T T T T
T1 T2
M’
T
Handled by a quan`fied boolean formula (QBF) solver
![Page 79: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/79.jpg)
Incremental synthesis
Allowed litmus tests
Forbidden litmus tests
Synth T T T T T T T
T T T T T T T T
T1 T2
M’T
Handled by a quan`fied boolean formula (QBF) solver
![Page 80: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/80.jpg)
Incremental synthesis
Allowed litmus tests
Forbidden litmus testsCompleted memory model M
Synth T T T T T T T
T T T T T T T T
T1 T2
M’T
Handled by a quan`fied boolean formula (QBF) solver
![Page 81: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/81.jpg)
Incremental synthesis
Allowed litmus tests
Forbidden litmus testsCompleted memory model M
Synth T T T T T T T
T T T T T T T T
T1 T2
M’T
Empirically, need very few itera`ons to converge
Handled by a quan`fied boolean formula (QBF) solver
![Page 82: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/82.jpg)
Disambiguating synthesized models
Ambig
Key idea: aoer synthesis, is there a different memory model that also explains the input tests?
![Page 83: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/83.jpg)
Disambiguating synthesized models
Allowed litmus tests
Forbidden litmus tests Ambig
Key idea: aoer synthesis, is there a different memory model that also explains the input tests?
Memory model sketch M̂
![Page 84: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/84.jpg)
Disambiguating synthesized models
Allowed litmus tests
Forbidden litmus tests AmbigCompleted memory model M
Key idea: aoer synthesis, is there a different memory model that also explains the input tests?
Memory model sketch M̂
![Page 85: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/85.jpg)
Disambiguating synthesized models
Allowed litmus tests
Forbidden litmus tests Ambig Litmus test T
Completed memory model M
Completed memory model M2
Key idea: aoer synthesis, is there a different memory model that also explains the input tests?
Memory model sketch M̂
![Page 86: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/86.jpg)
Disambiguating synthesized models
Allowed litmus tests
Forbidden litmus tests Ambig Litmus test T
Completed memory model M
Completed memory model M2
Key idea: aoer synthesis, is there a different memory model that also explains the input tests?
Difference between M and M2 is not just syntac`c: they disagree about test T
Memory model sketch M̂
![Page 87: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/87.jpg)
Synthesizing existing memory models
x86
PowerPC
![Page 88: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/88.jpg)
Synthesizing existing memory models
x86
PowerPC 768 tests[Alglave et al, CAV’10]
10 tests
![Page 89: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/89.jpg)
Synthesis
Synthesizing existing memory models
x86
PowerPC 768 tests[Alglave et al, CAV’10]
10 tests ✓ 2 seconds
✓ 12 seconds
![Page 90: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/90.jpg)
Synthesis
Synthesizing existing memory models
x86
PowerPC 768 tests[Alglave et al, CAV’10]
10 tests ✓ 2 seconds
✓ 12 seconds
Not equivalent to TSO!
![Page 91: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/91.jpg)
Synthesis
Synthesizing existing memory models
x86
PowerPC 768 tests[Alglave et al, CAV’10]
10 tests ✓ 2 seconds
✓ 12 secondsNot equivalent to published model!
Not equivalent to TSO!
![Page 92: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/92.jpg)
Synthesis
Synthesizing existing memory models
x86
PowerPC 768 tests[Alglave et al, CAV’10]
10 tests ✓ 2 seconds
✓ 12 secondsNot equivalent to published model!
4 new tests
9 new tests
Ambiguity
Not equivalent to TSO!
mfence, xchg
sync, lwsync
![Page 93: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/93.jpg)
MemSynth: automated programming for memory consistency models
Litmus tests and prose
∀∃ ∈
∧
∨
∩∪⊂
⋈⇒
Formalspecifica`ons
Synthesize specifica`ons from litmus tests
Detect ambigui`es in synthesized models
x86: 2 seconds PowerPC: 12 seconds
x86: 4 ambigui`es PowerPC: 9 ambigui`es
![Page 94: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/94.jpg)
Automated tools are worth building The case of memory models [PLDI’17]
Building them can be made systematic Symbolic profiling [OOPSLA’18]
The future is more automation Automating the automated programming stack
![Page 95: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/95.jpg)
Automated tools are worth building The case of memory models [PLDI’17]
Building them can be made systematic Symbolic profiling [OOPSLA’18]
The future is more automation Automating the automated programming stack
![Page 96: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/96.jpg)
Scaling a synthesis tool is hard work
12 seconds
![Page 97: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/97.jpg)
Scaling a synthesis tool is hard workTi
me
(sec
s)
0
3000
6000
9000
12000
January February March April May June
12 seconds
![Page 98: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/98.jpg)
Scaling a synthesis tool is hard workTi
me
(sec
s)
0
3000
6000
9000
12000
January February March April May June
12 seconds
3 hours
![Page 99: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/99.jpg)
Scaling a synthesis tool is hard workTi
me
(sec
s)
0
3000
6000
9000
12000
January February March April May June
12 seconds
3 hours Finding these op`miza`on opportuni`es is the key to good performance and new func`onality
![Page 100: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/100.jpg)
Symbolic profilingTi
me
(sec
s)
0
3000
6000
9000
12000
January February March April May June
12 seconds
3 hours A symbolic profiler identifies optimization opportunities in an automated tool.
![Page 101: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/101.jpg)
Symbolic profilingTi
me
(sec
s)
0
3000
6000
9000
12000
January February March April May June
12 seconds
3 hours A symbolic profiler identifies optimization opportunities in an automated tool.
What makes scaling an automated programming tool hard?
How does symbolic profiling work?
How effective is symbolic profiling?
![Page 102: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/102.jpg)
Symbolic evaluation executes all paths through a program
(filter even? ‘(3 6 8 2 ))
![Page 103: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/103.jpg)
Symbolic evaluation executes all paths through a program
(filter even? ‘(3 6 8 2 ))
‘()
![Page 104: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/104.jpg)
Symbolic evaluation executes all paths through a program
(filter even? ‘(3 6 8 2 ))
‘()
‘()
¬(even? 3)
![Page 105: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/105.jpg)
Symbolic evaluation executes all paths through a program
(filter even? ‘(3 6 8 2 ))
‘()
‘()
‘(6)
¬(even? 3)
(even? 6)
![Page 106: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/106.jpg)
Symbolic evaluation executes all paths through a program
(filter even? ‘(3 6 8 2 ))
‘()
‘()
‘(6)
‘(6 8)
¬(even? 3)
(even? 6)
(even? 8)
![Page 107: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/107.jpg)
Symbolic evaluation executes all paths through a program
(filter even? ‘(3 6 8 2 ))
‘()
‘()
‘(6)
‘(6 8)
¬(even? 3)
(even? 6)
‘(6 8 2)
(even? 8)
(even? 2)
![Page 108: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/108.jpg)
Symbolic evaluation executes all paths through a program
(filter even? ‘(3 6 8 2 ))
‘()
‘()
‘(6)
‘(6 8)
¬(even? 3)
(even? 6)
‘(6 8 2)
(even? 8)
(even? 2)
Does this expression always return only even numbers?
![Page 109: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/109.jpg)
Values of list elements are unknown (e.g., verifying filter for all inputs)
Symbolic evaluation executes all paths through a program
(filter even? ‘(x0 x1 x2 x3))
‘()
‘()
‘(6)
‘(6 8)
¬(even? 3)
(even? 6)
‘(6 8 2)
(even? 8)
(even? 2)
Does this expression always return only even numbers?
![Page 110: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/110.jpg)
Values of list elements are unknown (e.g., verifying filter for all inputs)
Symbolic evaluation executes all paths through a program
(filter even? ‘(x0 x1 x2 x3))
‘()
‘()
‘(x1)
‘(x1 x2)
¬(even? x0)
(even? x1)
‘(x0)
‘() ‘(x0) ‘(x0 x1)
‘(x2) ‘(x1) ‘(x0) ‘(x0 x2) ‘(x0 x1)
‘(x1 x2 x3)‘(x1 x3)‘(x1 x2)‘(x1)‘(x2 x3) ‘(x0)‘(x0 x3)‘(x0 x2)‘(x0 x2 x3)‘(x0 x3)
(even? x2)
(even? x3)
Does this expression always return only even numbers?
![Page 111: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/111.jpg)
Values of list elements are unknown (e.g., verifying filter for all inputs)
Symbolic evaluation executes all paths through a program
(filter even? ‘(x0 x1 x2 x3))
‘()
‘()
‘(x1)
‘(x1 x2)
¬(even? x0)
(even? x1)
‘(x0)
‘() ‘(x0) ‘(x0 x1)
‘(x2) ‘(x1) ‘(x0) ‘(x0 x2) ‘(x0 x1)
‘(x1 x2 x3)‘(x1 x3)‘(x1 x2)‘(x1)‘(x2 x3) ‘(x0)‘(x0 x3)‘(x0 x2)‘(x0 x2 x3)‘(x0 x3)
(even? x2)
(even? x3)
Does this expression always return only even numbers?
(length )
![Page 112: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/112.jpg)
Values of list elements are unknown (e.g., verifying filter for all inputs)
Symbolic evaluation executes all paths through a program
(filter even? ‘(x0 x1 x2 x3))
‘()
‘()
‘(x1)
‘(x1 x2)
¬(even? x0)
(even? x1)
‘(x0)
‘() ‘(x0) ‘(x0 x1)
‘(x2) ‘(x1) ‘(x0) ‘(x0 x2) ‘(x0 x1)
‘(x1 x2 x3)‘(x1 x3)‘(x1 x2)‘(x1)‘(x2 x3) ‘(x0)‘(x0 x3)‘(x0 x2)‘(x0 x2 x3)‘(x0 x3)
(even? x2)
(even? x3)
Does this expression always return only even numbers?
(length )
2 2 3 1 2 2 3 212
![Page 113: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/113.jpg)
Symbolic evaluation techniques
Symbolic execution
Bounded model checking
Always fork into independent paths (more paths, but more concrete)
Merge aoer every fork (fewer paths, but less concrete)
![Page 114: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/114.jpg)
Symbolic evaluation techniques
Symbolic execution
Bounded model checking
Always fork into independent paths (more paths, but more concrete)
Merge aoer every fork (fewer paths, but less concrete)
Rosepe [Torlak & Bodik 2014]Jalangi [Sen et al 2014]
Crucible [Galois, Inc.]
![Page 115: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/115.jpg)
Symbolic evaluation techniques
Symbolic execution
Bounded model checking
Always fork into independent paths (more paths, but more concrete)
Merge aoer every fork (fewer paths, but less concrete)
Rosepe [Torlak & Bodik 2014]Jalangi [Sen et al 2014]
Crucible [Galois, Inc.]
Controlling the trade-off between these strategies is key to good scalability
![Page 116: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/116.jpg)
Two data structures to summarize symbolic evaluation
‘()
‘() ‘(x0)
‘() ‘(x1) ‘(x0) ‘(x0 x1)
¬(even? x0) (even? x0)
(even? x1)¬(even? x1) (even? x1)¬(even? x1)
(even? x0)
∧
¬
∧∧ ∧
¬
(even? x1)
Symbolic evalua\on graph Reflects the evaluator’s strategyfor all-paths execu`on of the program
Symbolic heap Shape of all symbolic valuescreated by the program
![Page 117: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/117.jpg)
Two data structures to summarize symbolic evaluation
‘()
‘() ‘(x0)
‘() ‘(x1) ‘(x0) ‘(x0 x1)
¬(even? x0) (even? x0)
(even? x1)¬(even? x1) (even? x1)¬(even? x1)
(even? x0)
∧
¬
∧∧ ∧
¬
(even? x1)
Symbolic evalua\on graph Reflects the evaluator’s strategyfor all-paths execu`on of the program
Symbolic heap Shape of all symbolic valuescreated by the program
Any symbolic evalua\on technique can be summarized by these two data structures
![Page 118: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/118.jpg)
Analyzing symbolic data structures
![Page 119: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/119.jpg)
For each procedure, measure metrics that summarize the evolu`on of the symbolic evalua`on graph and symbolic heap
Summarize metrics as a score to rank procedures in the program
Analyzing symbolic data structures
![Page 120: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/120.jpg)
For each procedure, measure metrics that summarize the evolu`on of the symbolic evalua`on graph and symbolic heap
Summarize metrics as a score to rank procedures in the program
Analyzing symbolic data structures
The most likely bopleneck is not the slowest procedure
The most likely bopleneck is not the slowest procedure
![Page 121: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/121.jpg)
Three symbolic profilersWe developed two implementa`ons:
• The RoseZe solver-aided language (Racket)
• The Jalangi dynamic analysis framework (JavaScript)
Since publica`on, based on our work:
• The Crucible symbolic simula`on library (C, Java, …) by Galois
![Page 122: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/122.jpg)
Three symbolic profilersWe developed two implementa`ons:
• The RoseZe solver-aided language (Racket)
• The Jalangi dynamic analysis framework (JavaScript)
Since publica`on, based on our work:
• The Crucible symbolic simula`on library (C, Java, …) by Galois
Today
![Page 123: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/123.jpg)
Symbolic profiling in practice
Refinement type checker for Ruby [VMCAI’18] 6× speedupCryptographic protocol verifier [FM’18] 29× speedupSQL query verifier [CIDR’17] 75× speedupSafety-critical radiotherapy system verifier [CAV’16] 290× speedup
Case studies: fixed 8 performance issues in 15 Rosette tools
![Page 124: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/124.jpg)
Symbolic profiling in practice
Refinement type checker for Ruby [VMCAI’18] 6× speedupCryptographic protocol verifier [FM’18] 29× speedupSQL query verifier [CIDR’17] 75× speedupSafety-critical radiotherapy system verifier [CAV’16] 290× speedup
Used in produc`on at the UW Medical Center
Case studies: fixed 8 performance issues in 15 Rosette tools
![Page 125: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/125.jpg)
Symbolic profiling in practice
Refinement type checker for Ruby [VMCAI’18] 6× speedupCryptographic protocol verifier [FM’18] 29× speedupSQL query verifier [CIDR’17] 75× speedupSafety-critical radiotherapy system verifier [CAV’16] 290× speedup
Case studies: fixed 8 performance issues in 15 Rosette tools
User study: 8 Rosette users tasked with finding known performance issues in 4 programs
Users solved every task more quickly when they had access to symbolic profiling
6 failures without symbolic profiling vs. none with it
![Page 126: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/126.jpg)
Symbolic profilingTi
me
(sec
s)
0
3000
6000
9000
12000
January February March April May June
12 seconds
3 hours A symbolic profiler identifies optimization opportunities in an automated tool.
![Page 127: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/127.jpg)
Automated tools are worth building The case of memory models [PLDI’17]
Building them can be made systematic Symbolic profiling [OOPSLA’18]
The future is more automation Automating the automated programming stack
![Page 128: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/128.jpg)
Automated tools are worth building The case of memory models [PLDI’17]
Building them can be made systematic Symbolic profiling [OOPSLA’18]
The future is more automation Automating the automated programming stack
![Page 129: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/129.jpg)
Automated programming abstractions
File systems [ASPLOS’16, OSDI’16]
Operating systems [SOSP’17, OSDI’18]
Memory models [PLDI’17]
Metasketches [POPL’16]
Symbolic profiling [OOPSLA’18]
Solver-aided languages front-end abstractions for verification/synthesis
Symbolic evaluation algorithms to translate programs to SAT/SMT
SAT/SMT solving improvements in scale and expressiveness
![Page 130: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/130.jpg)
Diagnosing SMT solver behavior
File systems [ASPLOS’16, OSDI’16]
Operating systems [SOSP’17, OSDI’18]
Memory models [PLDI’17]
Metasketches [POPL’16]
Symbolic profiling [OOPSLA’18]
Solver-aided languages front-end abstractions for verification/synthesis
Symbolic evaluation algorithms to translate programs to SAT/SMT
SAT/SMT solving improvements in scale and expressiveness ?
![Page 131: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/131.jpg)
Diagnosing SMT solver behavior
SAT/SMT solving improvements in scale and expressiveness
![Page 132: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/132.jpg)
Diagnosing SMT solver behavior
File systems [ASPLOS’16, OSDI’16]
Operating systems [SOSP’17, OSDI’18]
Memory models [PLDI’17]
Metasketches [POPL’16]
Symbolic profiling [OOPSLA’18]
Solver-aided languages front-end abstractions for verification/synthesis
Symbolic evaluation algorithms to translate programs to SAT/SMT
SAT/SMT solving improvements in scale and expressiveness
Solver profiling
![Page 133: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/133.jpg)
Self-optimizing automated tools
File systems [ASPLOS’16, OSDI’16]
Operating systems [SOSP’17, OSDI’18]
Memory models [PLDI’17]
Metasketches [POPL’16]
Symbolic profiling [OOPSLA’18]
Solver-aided languages front-end abstractions for verification/synthesis
Symbolic evaluation algorithms to translate programs to SAT/SMT
SAT/SMT solving improvements in scale and expressiveness
Solver profiling
Exploit this profiling data for profile-guided op`miza`on
![Page 134: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/134.jpg)
Application opportunities
File systems [ASPLOS’16, OSDI’16]
Operating systems [SOSP’17, OSDI’18]
Memory models [PLDI’17]
Hardware accelerator design/programming
High-performancelow-precision kernels
2
4 . . .
3
5 ⇥. . .
⇤
<latexit sha1_base64="82XuOOPTGgCFx506OuCN1kMU+88=">AAAHl3icdVXfj9NGEPZBuUBa4ICnqi9WA4inKM4BOXQPICpV9A2qHiBlo9N6M05Wtz/M7hgSWf47K/4YpI5/0ATbseRkPN83387MjtdxqqTHyeTr0bXrP904Hty8Nfz5l9t37p7cu//e28wJuBBWWfcx5h6UNHCBEhV8TB1wHSv4EF/9UeIfPoPz0pp/cJvCQvOVkYkUHMl1efKJKUhwPmQxrKTJuXN8W+SiGLLzkLEhW1r0lXE+ZGCWDWHInFytcRH2R4syvozsi7k8GU3GZ7Ppi6fPQzLOTl88m9bGbDoLo/GkukZBc729vHd8h8REpsGgUNz7eTRJcUGyKIUCEs48pFxc8RXMyTRcg1/kVW+K8BF5lmFiHd0Gw8q7H5Fz7f1Wx8TUHNe+jZXOPmyeYXK2yKVJMwQj6oWSTIVow7LR4VI6EKi2ZHDhJOUaijV3XCBtx5AZ+CKs1pz6w/4u5tEip175zEG5Us6q9ZJ8FBUF23has6xzP0YoW7K7kQgbRKz/uRdSCumoeQVJ9StlRn4uKIm8MlqgsQYqsDJaoFyCqcDKaIOGCqVZxKKbnxf5X//DB9KSxiM3KDnCIYUdYafx6AcRVae/H21TcBytK8ckr/ADCehMoUzrBjtQfMNkorVdQp2B0+XusPOCgfIwilgi+3WMLb6LURfbbfJWww6vnlqMuoSG0LMLbll0Z0divjxUmAfdHRulYprNK8BwFIXMueapvRiX5Y6XITG98JVBjSBnh2gs7tfdVaLfHqnS26HSi9xlkrObnaZDE3xfig3SDUmSPjp5uxkrtSupfGgTYEMntt9xmucWDVqVP24TEnRZe2ybvCqkw084jWB/QA21IzBLe0aAm5WCev8r89D8pCCK+WlngFLu6Iheg5eeRM7D0ZTu03KY9pADmpgWOY0ylx7G0Qw2bB3bTf6QeTo6U/S4VcC81A/LSugL8v0zER423k/H0WQcvXs6evW6+ZbcDH4Lfg+eBFEwC14Fb4K3wUUggn+Db0fHR4PBr4OXgz8Hb2rqtaMm5kHwwzV49x8Tq9ah</latexit><latexit sha1_base64="82XuOOPTGgCFx506OuCN1kMU+88=">AAAHl3icdVXfj9NGEPZBuUBa4ICnqi9WA4inKM4BOXQPICpV9A2qHiBlo9N6M05Wtz/M7hgSWf47K/4YpI5/0ATbseRkPN83387MjtdxqqTHyeTr0bXrP904Hty8Nfz5l9t37p7cu//e28wJuBBWWfcx5h6UNHCBEhV8TB1wHSv4EF/9UeIfPoPz0pp/cJvCQvOVkYkUHMl1efKJKUhwPmQxrKTJuXN8W+SiGLLzkLEhW1r0lXE+ZGCWDWHInFytcRH2R4syvozsi7k8GU3GZ7Ppi6fPQzLOTl88m9bGbDoLo/GkukZBc729vHd8h8REpsGgUNz7eTRJcUGyKIUCEs48pFxc8RXMyTRcg1/kVW+K8BF5lmFiHd0Gw8q7H5Fz7f1Wx8TUHNe+jZXOPmyeYXK2yKVJMwQj6oWSTIVow7LR4VI6EKi2ZHDhJOUaijV3XCBtx5AZ+CKs1pz6w/4u5tEip175zEG5Us6q9ZJ8FBUF23has6xzP0YoW7K7kQgbRKz/uRdSCumoeQVJ9StlRn4uKIm8MlqgsQYqsDJaoFyCqcDKaIOGCqVZxKKbnxf5X//DB9KSxiM3KDnCIYUdYafx6AcRVae/H21TcBytK8ckr/ADCehMoUzrBjtQfMNkorVdQp2B0+XusPOCgfIwilgi+3WMLb6LURfbbfJWww6vnlqMuoSG0LMLbll0Z0divjxUmAfdHRulYprNK8BwFIXMueapvRiX5Y6XITG98JVBjSBnh2gs7tfdVaLfHqnS26HSi9xlkrObnaZDE3xfig3SDUmSPjp5uxkrtSupfGgTYEMntt9xmucWDVqVP24TEnRZe2ybvCqkw084jWB/QA21IzBLe0aAm5WCev8r89D8pCCK+WlngFLu6Iheg5eeRM7D0ZTu03KY9pADmpgWOY0ylx7G0Qw2bB3bTf6QeTo6U/S4VcC81A/LSugL8v0zER423k/H0WQcvXs6evW6+ZbcDH4Lfg+eBFEwC14Fb4K3wUUggn+Db0fHR4PBr4OXgz8Hb2rqtaMm5kHwwzV49x8Tq9ah</latexit><latexit sha1_base64="82XuOOPTGgCFx506OuCN1kMU+88=">AAAHl3icdVXfj9NGEPZBuUBa4ICnqi9WA4inKM4BOXQPICpV9A2qHiBlo9N6M05Wtz/M7hgSWf47K/4YpI5/0ATbseRkPN83387MjtdxqqTHyeTr0bXrP904Hty8Nfz5l9t37p7cu//e28wJuBBWWfcx5h6UNHCBEhV8TB1wHSv4EF/9UeIfPoPz0pp/cJvCQvOVkYkUHMl1efKJKUhwPmQxrKTJuXN8W+SiGLLzkLEhW1r0lXE+ZGCWDWHInFytcRH2R4syvozsi7k8GU3GZ7Ppi6fPQzLOTl88m9bGbDoLo/GkukZBc729vHd8h8REpsGgUNz7eTRJcUGyKIUCEs48pFxc8RXMyTRcg1/kVW+K8BF5lmFiHd0Gw8q7H5Fz7f1Wx8TUHNe+jZXOPmyeYXK2yKVJMwQj6oWSTIVow7LR4VI6EKi2ZHDhJOUaijV3XCBtx5AZ+CKs1pz6w/4u5tEip175zEG5Us6q9ZJ8FBUF23has6xzP0YoW7K7kQgbRKz/uRdSCumoeQVJ9StlRn4uKIm8MlqgsQYqsDJaoFyCqcDKaIOGCqVZxKKbnxf5X//DB9KSxiM3KDnCIYUdYafx6AcRVae/H21TcBytK8ckr/ADCehMoUzrBjtQfMNkorVdQp2B0+XusPOCgfIwilgi+3WMLb6LURfbbfJWww6vnlqMuoSG0LMLbll0Z0divjxUmAfdHRulYprNK8BwFIXMueapvRiX5Y6XITG98JVBjSBnh2gs7tfdVaLfHqnS26HSi9xlkrObnaZDE3xfig3SDUmSPjp5uxkrtSupfGgTYEMntt9xmucWDVqVP24TEnRZe2ybvCqkw084jWB/QA21IzBLe0aAm5WCev8r89D8pCCK+WlngFLu6Iheg5eeRM7D0ZTu03KY9pADmpgWOY0ylx7G0Qw2bB3bTf6QeTo6U/S4VcC81A/LSugL8v0zER423k/H0WQcvXs6evW6+ZbcDH4Lfg+eBFEwC14Fb4K3wUUggn+Db0fHR4PBr4OXgz8Hb2rqtaMm5kHwwzV49x8Tq9ah</latexit><latexit sha1_base64="82XuOOPTGgCFx506OuCN1kMU+88=">AAAHl3icdVXfj9NGEPZBuUBa4ICnqi9WA4inKM4BOXQPICpV9A2qHiBlo9N6M05Wtz/M7hgSWf47K/4YpI5/0ATbseRkPN83387MjtdxqqTHyeTr0bXrP904Hty8Nfz5l9t37p7cu//e28wJuBBWWfcx5h6UNHCBEhV8TB1wHSv4EF/9UeIfPoPz0pp/cJvCQvOVkYkUHMl1efKJKUhwPmQxrKTJuXN8W+SiGLLzkLEhW1r0lXE+ZGCWDWHInFytcRH2R4syvozsi7k8GU3GZ7Ppi6fPQzLOTl88m9bGbDoLo/GkukZBc729vHd8h8REpsGgUNz7eTRJcUGyKIUCEs48pFxc8RXMyTRcg1/kVW+K8BF5lmFiHd0Gw8q7H5Fz7f1Wx8TUHNe+jZXOPmyeYXK2yKVJMwQj6oWSTIVow7LR4VI6EKi2ZHDhJOUaijV3XCBtx5AZ+CKs1pz6w/4u5tEip175zEG5Us6q9ZJ8FBUF23has6xzP0YoW7K7kQgbRKz/uRdSCumoeQVJ9StlRn4uKIm8MlqgsQYqsDJaoFyCqcDKaIOGCqVZxKKbnxf5X//DB9KSxiM3KDnCIYUdYafx6AcRVae/H21TcBytK8ckr/ADCehMoUzrBjtQfMNkorVdQp2B0+XusPOCgfIwilgi+3WMLb6LURfbbfJWww6vnlqMuoSG0LMLbll0Z0divjxUmAfdHRulYprNK8BwFIXMueapvRiX5Y6XITG98JVBjSBnh2gs7tfdVaLfHqnS26HSi9xlkrObnaZDE3xfig3SDUmSPjp5uxkrtSupfGgTYEMntt9xmucWDVqVP24TEnRZe2ybvCqkw084jWB/QA21IzBLe0aAm5WCev8r89D8pCCK+WlngFLu6Iheg5eeRM7D0ZTu03KY9pADmpgWOY0ylx7G0Qw2bB3bTf6QeTo6U/S4VcC81A/LSugL8v0zER423k/H0WQcvXs6evW6+ZbcDH4Lfg+eBFEwC14Fb4K3wUUggn+Db0fHR4PBr4OXgz8Hb2rqtaMm5kHwwzV49x8Tq9ah</latexit>
![Page 135: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/135.jpg)
File systems [ASPLOS’16, OSDI’16]
Operating systems [SOSP’17, OSDI’18]
Memory models [PLDI’17]
Metasketches [POPL’16]
Symbolic profiling [OOPSLA’18]
Solver profiling
Hardware accelerator design/programming
High-performancelow-precision kernels
2
4 . . .
3
5 ⇥. . .
⇤
<latexit sha1_base64="82XuOOPTGgCFx506OuCN1kMU+88=">AAAHl3icdVXfj9NGEPZBuUBa4ICnqi9WA4inKM4BOXQPICpV9A2qHiBlo9N6M05Wtz/M7hgSWf47K/4YpI5/0ATbseRkPN83387MjtdxqqTHyeTr0bXrP904Hty8Nfz5l9t37p7cu//e28wJuBBWWfcx5h6UNHCBEhV8TB1wHSv4EF/9UeIfPoPz0pp/cJvCQvOVkYkUHMl1efKJKUhwPmQxrKTJuXN8W+SiGLLzkLEhW1r0lXE+ZGCWDWHInFytcRH2R4syvozsi7k8GU3GZ7Ppi6fPQzLOTl88m9bGbDoLo/GkukZBc729vHd8h8REpsGgUNz7eTRJcUGyKIUCEs48pFxc8RXMyTRcg1/kVW+K8BF5lmFiHd0Gw8q7H5Fz7f1Wx8TUHNe+jZXOPmyeYXK2yKVJMwQj6oWSTIVow7LR4VI6EKi2ZHDhJOUaijV3XCBtx5AZ+CKs1pz6w/4u5tEip175zEG5Us6q9ZJ8FBUF23has6xzP0YoW7K7kQgbRKz/uRdSCumoeQVJ9StlRn4uKIm8MlqgsQYqsDJaoFyCqcDKaIOGCqVZxKKbnxf5X//DB9KSxiM3KDnCIYUdYafx6AcRVae/H21TcBytK8ckr/ADCehMoUzrBjtQfMNkorVdQp2B0+XusPOCgfIwilgi+3WMLb6LURfbbfJWww6vnlqMuoSG0LMLbll0Z0divjxUmAfdHRulYprNK8BwFIXMueapvRiX5Y6XITG98JVBjSBnh2gs7tfdVaLfHqnS26HSi9xlkrObnaZDE3xfig3SDUmSPjp5uxkrtSupfGgTYEMntt9xmucWDVqVP24TEnRZe2ybvCqkw084jWB/QA21IzBLe0aAm5WCev8r89D8pCCK+WlngFLu6Iheg5eeRM7D0ZTu03KY9pADmpgWOY0ylx7G0Qw2bB3bTf6QeTo6U/S4VcC81A/LSugL8v0zER423k/H0WQcvXs6evW6+ZbcDH4Lfg+eBFEwC14Fb4K3wUUggn+Db0fHR4PBr4OXgz8Hb2rqtaMm5kHwwzV49x8Tq9ah</latexit><latexit sha1_base64="82XuOOPTGgCFx506OuCN1kMU+88=">AAAHl3icdVXfj9NGEPZBuUBa4ICnqi9WA4inKM4BOXQPICpV9A2qHiBlo9N6M05Wtz/M7hgSWf47K/4YpI5/0ATbseRkPN83387MjtdxqqTHyeTr0bXrP904Hty8Nfz5l9t37p7cu//e28wJuBBWWfcx5h6UNHCBEhV8TB1wHSv4EF/9UeIfPoPz0pp/cJvCQvOVkYkUHMl1efKJKUhwPmQxrKTJuXN8W+SiGLLzkLEhW1r0lXE+ZGCWDWHInFytcRH2R4syvozsi7k8GU3GZ7Ppi6fPQzLOTl88m9bGbDoLo/GkukZBc729vHd8h8REpsGgUNz7eTRJcUGyKIUCEs48pFxc8RXMyTRcg1/kVW+K8BF5lmFiHd0Gw8q7H5Fz7f1Wx8TUHNe+jZXOPmyeYXK2yKVJMwQj6oWSTIVow7LR4VI6EKi2ZHDhJOUaijV3XCBtx5AZ+CKs1pz6w/4u5tEip175zEG5Us6q9ZJ8FBUF23has6xzP0YoW7K7kQgbRKz/uRdSCumoeQVJ9StlRn4uKIm8MlqgsQYqsDJaoFyCqcDKaIOGCqVZxKKbnxf5X//DB9KSxiM3KDnCIYUdYafx6AcRVae/H21TcBytK8ckr/ADCehMoUzrBjtQfMNkorVdQp2B0+XusPOCgfIwilgi+3WMLb6LURfbbfJWww6vnlqMuoSG0LMLbll0Z0divjxUmAfdHRulYprNK8BwFIXMueapvRiX5Y6XITG98JVBjSBnh2gs7tfdVaLfHqnS26HSi9xlkrObnaZDE3xfig3SDUmSPjp5uxkrtSupfGgTYEMntt9xmucWDVqVP24TEnRZe2ybvCqkw084jWB/QA21IzBLe0aAm5WCev8r89D8pCCK+WlngFLu6Iheg5eeRM7D0ZTu03KY9pADmpgWOY0ylx7G0Qw2bB3bTf6QeTo6U/S4VcC81A/LSugL8v0zER423k/H0WQcvXs6evW6+ZbcDH4Lfg+eBFEwC14Fb4K3wUUggn+Db0fHR4PBr4OXgz8Hb2rqtaMm5kHwwzV49x8Tq9ah</latexit><latexit sha1_base64="82XuOOPTGgCFx506OuCN1kMU+88=">AAAHl3icdVXfj9NGEPZBuUBa4ICnqi9WA4inKM4BOXQPICpV9A2qHiBlo9N6M05Wtz/M7hgSWf47K/4YpI5/0ATbseRkPN83387MjtdxqqTHyeTr0bXrP904Hty8Nfz5l9t37p7cu//e28wJuBBWWfcx5h6UNHCBEhV8TB1wHSv4EF/9UeIfPoPz0pp/cJvCQvOVkYkUHMl1efKJKUhwPmQxrKTJuXN8W+SiGLLzkLEhW1r0lXE+ZGCWDWHInFytcRH2R4syvozsi7k8GU3GZ7Ppi6fPQzLOTl88m9bGbDoLo/GkukZBc729vHd8h8REpsGgUNz7eTRJcUGyKIUCEs48pFxc8RXMyTRcg1/kVW+K8BF5lmFiHd0Gw8q7H5Fz7f1Wx8TUHNe+jZXOPmyeYXK2yKVJMwQj6oWSTIVow7LR4VI6EKi2ZHDhJOUaijV3XCBtx5AZ+CKs1pz6w/4u5tEip175zEG5Us6q9ZJ8FBUF23has6xzP0YoW7K7kQgbRKz/uRdSCumoeQVJ9StlRn4uKIm8MlqgsQYqsDJaoFyCqcDKaIOGCqVZxKKbnxf5X//DB9KSxiM3KDnCIYUdYafx6AcRVae/H21TcBytK8ckr/ADCehMoUzrBjtQfMNkorVdQp2B0+XusPOCgfIwilgi+3WMLb6LURfbbfJWww6vnlqMuoSG0LMLbll0Z0divjxUmAfdHRulYprNK8BwFIXMueapvRiX5Y6XITG98JVBjSBnh2gs7tfdVaLfHqnS26HSi9xlkrObnaZDE3xfig3SDUmSPjp5uxkrtSupfGgTYEMntt9xmucWDVqVP24TEnRZe2ybvCqkw084jWB/QA21IzBLe0aAm5WCev8r89D8pCCK+WlngFLu6Iheg5eeRM7D0ZTu03KY9pADmpgWOY0ylx7G0Qw2bB3bTf6QeTo6U/S4VcC81A/LSugL8v0zER423k/H0WQcvXs6evW6+ZbcDH4Lfg+eBFEwC14Fb4K3wUUggn+Db0fHR4PBr4OXgz8Hb2rqtaMm5kHwwzV49x8Tq9ah</latexit><latexit sha1_base64="82XuOOPTGgCFx506OuCN1kMU+88=">AAAHl3icdVXfj9NGEPZBuUBa4ICnqi9WA4inKM4BOXQPICpV9A2qHiBlo9N6M05Wtz/M7hgSWf47K/4YpI5/0ATbseRkPN83387MjtdxqqTHyeTr0bXrP904Hty8Nfz5l9t37p7cu//e28wJuBBWWfcx5h6UNHCBEhV8TB1wHSv4EF/9UeIfPoPz0pp/cJvCQvOVkYkUHMl1efKJKUhwPmQxrKTJuXN8W+SiGLLzkLEhW1r0lXE+ZGCWDWHInFytcRH2R4syvozsi7k8GU3GZ7Ppi6fPQzLOTl88m9bGbDoLo/GkukZBc729vHd8h8REpsGgUNz7eTRJcUGyKIUCEs48pFxc8RXMyTRcg1/kVW+K8BF5lmFiHd0Gw8q7H5Fz7f1Wx8TUHNe+jZXOPmyeYXK2yKVJMwQj6oWSTIVow7LR4VI6EKi2ZHDhJOUaijV3XCBtx5AZ+CKs1pz6w/4u5tEip175zEG5Us6q9ZJ8FBUF23has6xzP0YoW7K7kQgbRKz/uRdSCumoeQVJ9StlRn4uKIm8MlqgsQYqsDJaoFyCqcDKaIOGCqVZxKKbnxf5X//DB9KSxiM3KDnCIYUdYafx6AcRVae/H21TcBytK8ckr/ADCehMoUzrBjtQfMNkorVdQp2B0+XusPOCgfIwilgi+3WMLb6LURfbbfJWww6vnlqMuoSG0LMLbll0Z0divjxUmAfdHRulYprNK8BwFIXMueapvRiX5Y6XITG98JVBjSBnh2gs7tfdVaLfHqnS26HSi9xlkrObnaZDE3xfig3SDUmSPjp5uxkrtSupfGgTYEMntt9xmucWDVqVP24TEnRZe2ybvCqkw084jWB/QA21IzBLe0aAm5WCev8r89D8pCCK+WlngFLu6Iheg5eeRM7D0ZTu03KY9pADmpgWOY0ylx7G0Qw2bB3bTf6QeTo6U/S4VcC81A/LSugL8v0zER423k/H0WQcvXs6evW6+ZbcDH4Lfg+eBFEwC14Fb4K3wUUggn+Db0fHR4PBr4OXgz8Hb2rqtaMm5kHwwzV49x8Tq9ah</latexit>
New abstractions and tools can empower programmers to build specialized automated
programming tools that improve software reliability.
![Page 136: Optimizing the Automated Programming Stackbornholt/papers/thesis-phd19...Symbolic profiling [OOPSLA’18] The future is more automation Automating the automated programming stack Automated](https://reader030.fdocuments.us/reader030/viewer/2022040619/5f2e41901d69477d3520fcac/html5/thumbnails/136.jpg)
New abstractions and tools can empower programmers to build specialized automated
programming tools that improve software reliability.
Thanks!
[email protected] https://unsat.org