SlideShare a Scribd company logo
1 of 22
Download to read offline
Universit´e Libre de Bruxelles
Computer Science Department
MEMO-F524 Masters thesis
An Efficient and Parallel
Abstract Interpreter in Scala
— 3×3 Parallel Implementations —
Olivier Pirson — opi@opimedia.be
orcid.org/0000-0001-6296-9659
March 22, 2019
(Last modifications: March 26, 2019)
https://speakerdeck.com/opimedia/
efficient-parallel-abstract-interpreter-in-scala-3x3-implementations
Vrije Universiteit Brussel
Promotors Coen De Roover
Wolfgang De Meuter
Advisor Quentin Stievenart
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
1 The problematic: How to prove properties in reasonable time?
2 Sequential algorithm
3 Parallel algorithms
4 Results
5 Todo
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 2 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
From undecidable problem to fast decidable technique
We want prove properties about programs.
But it is an undecidable problem.
↓
Abstract interpretation is a static analysis technique that
evaluates abstraction of programs.
Decidable but high time complexity.
↓
A possible way to make that faster is to parallelize. . .
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 3 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Parallelization of Scala-AM
Scala-AM
“(Abstract) Abstract Machine Experiments using Scala”
(forked around September 14, 2017)
↓
Restriction to the simplest abstract machine (AAM),
without optimization
Restriction to analyze only Scheme programs.
↓
3×3 parallel implementations (ParAAM∗) with actors (Akka)
↓
Scala-Par-AM
https://bitbucket.org/OPiMedia/scala-par-am/
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 4 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
1 The problematic: How to prove properties in reasonable time?
2 Sequential algorithm
3 Parallel algorithms
4 Results
5 Todo
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 5 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Worklist and step function, walk over the state graph
(letrec ((abs (lambda (x) (if (>= x 0) x (- x))))) (abs -42))
initial state
(abs -42)
step function
(if (>= x 0) x (- x))
(>= x 0)
ko(Bool)
x (- x)
ko(Int)
( Ò ( × x )
( (>= x 0)
x
(− x ) ) )
( × −42)
# state: 8
# final value: 1 (Int)
# already visited: 1
Worklist max size: 2
Sizes of successors:
# size 1: 6
# size 2: 1
Essential parts of abstract interpretation for this presentation:
main loop on a worklist of states
the step function:
takes a state
and returns a set of states
Sequential algorithm (Scala code of SeqAAM)
w o r k l i s t = empty l i s t
v i s i t e d = empty s e t
w o r k l i s t = w o r k l i s t ∪ { i n i t i a l s t a t e }
Ö Ô Ø
s t a t e = p i c k one from w o r k l i s t
s t a t e not i n v i s i t e d Ø Ò
v i s i t e d = v i s i t e d ∪ { s t a t e }
e v a l u a t i o n of s t a t e
(essentially s u c c e s s o r s = ste p ( s t a t e ))
w o r k l i s t = w o r k l i s t ∪ s u c c e s s o r s
other update (final values. . . )
ÙÒØ Ð w o r k l i s t i s empty
The completed state graph
does not depend of the order of the evaluation.
Crucial for parallelization.
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 6 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Very simple Scheme example, bigger state graph
(letrec ((fibonacci (lambda (n) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))))) (fibonacci 10))
(fibonacci 10)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1)
ko(Bool)
n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))
ko(Int) (fibonacci (- n 1))
(- n 1)
ko(Int)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1)
ko(Bool)
n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))
ko(Int) (fibonacci (- n 1))ko(Int) (fibonacci (- n 1))
(- n 1)(fibonacci (- n 2)) (- n 1)
ko(Int)(- n 2) ko(Int)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1)(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1)
ko(Bool)
n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
ko(Bool)
n
(+ (fibonacci (- n 1)) (fibonacci (- n 2)))n n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
ko(Int) ko(Int)
(fibonacci (- n 2)) (fibonacci (- n 2))
ko(Int)
(fibonacci (- n 1))ko(Int) ko(Int) (fibonacci (- n 1))(fibonacci (- n 1))
(- n 1)(fibonacci (- n 2)) (- n 1)(- n 1)
(- n 2) (- n 2)
ko(Int) ko(Int)
ko(Int) ko(Int)(- n 2) ko(Int)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1)
(<= n 1)
(<= n 1)(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
ko(Bool)ko(Bool)
ko(Bool)
n
(+ (fibonacci (- n 1)) (fibonacci (- n 2))) n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) n(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))(+ (fibonacci (- n 1)) (fibonacci (- n 2)))nn
(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
n
(+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n n
ko(Int)
(fibonacci (- n 1))ko(Int) ko(Int)
ko(Int)(fibonacci (- n 1)) (fibonacci (- n 1))ko(Int)
ko(Int)
ko(Int)
ko(Int) ko(Int)
(- n 1) (fibonacci (- n 2))(fibonacci (- n 2))
(- n 1) (- n 1)
(fibonacci (- n 2))(fibonacci (- n 2)) (fibonacci (- n 2))
(- n 2) (- n 2) ko(Int) (- n 2) (- n 2)
ko(Int) ko(Int)
(- n 2)
ko(Int) ko(Int)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
ko(Int)(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))ko(Int) ko(Int)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1)
ko(Bool)
ko(Bool)(<= n 1)
ko(Bool) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) nn
nn(+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
ko(Bool)
n
(+ (fibonacci (- n 1)) (fibonacci (- n 2))) n
(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
n(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
ko(Int)
ko(Int)
ko(Int)
ko(Int) ko(Int)
ko(Int)
n
(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n
ko(Int)
(fibonacci (- n 1))
ko(Int) (fibonacci (- n 1))
ko(Int)
(fibonacci (- n 2))(fibonacci (- n 2))(fibonacci (- n 2)) (fibonacci (- n 2))(fibonacci (- n 2))
ko(Int)
(fibonacci (- n 1))
ko(Int)
(fibonacci (- n 1))
ko(Int)
(- n 1)
(- n 1)
(- n 2) (- n 2)(- n 2)(- n 2)(- n 2)
(- n 1)
(- n 1)
ko(Int)
ko(Int)
ko(Int)ko(Int) ko(Int) ko(Int)ko(Int)ko(Int)
ko(Int)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1) (<= n 1) (<= n 1)
ko(Bool) ko(Bool)ko(Bool)
n n(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
n
(+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
n n
(+ (fibonacci (- n 1)) (fibonacci (- n 2)))n n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))(+ (fibonacci (- n 1)) (fibonacci (- n 2)))n
n ko(Int)(fibonacci (- n 1))ko(Int)
ko(Int)ko(Int) ko(Int)
ko(Int)ko(Int) ko(Int)
ko(Int)
(fibonacci (- n 2))
(- n 1)
(- n 2)
ko(Int)
ko(Int)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
(<= n 1)
ko(Bool)
(+ (fibonacci (- n 1)) (fibonacci (- n 2)))
n n
(+ (fibonacci (- n 1)) (fibonacci (- n 2)))n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))
(fibonacci (- n 1))
ko(Int) ko(Int)
ko(Int)
(- n 1)
ko(Int)
(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))
( Ò ( f i b o n a c c i n )
( (<= n 1)
n
(+ ( f i b o n a c c i (− n 1))
( f i b o n a c c i (− n 2 ) ) ) ) )
( f i b o n a c c i 10)
# state: 276
# final value: 1 (Int)
# already visited: 71
Worklist max size: 24
Sizes of successors:
# size 1: 231
# size 2: 13
# size 3: 3
# size 4: 2
# size 6: 12
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 7 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Worklist implementations
Possible (immutable) data structures to implement the worklist
(tested on Sergey/jfp/primtest.scm)
• list of states 2.304s (Scala code of SeqAAM)
s s s s s s
• set of states 2.466s (Scala code of SeqAAMS)
s s
s
s
s
s
• list of sets of states 2.315s (Scala code of SeqAAMLS)
s s s s s
s avoid useless concatenations
Each set corresponds to a result of the step function.
Selected for parallel implementations
and SeqAAMLS becomes the reference for comparisons.
These time results and following are averages on 10 repetitions (after 3
repetitions skipped), made on Intel Xeon Gold 6148 2.40GHz, 20 cores
available (VUB Hydra cluster), with Scala 2.12.7 – Akka 2.5.21 – Java
1.8.0 – GraalVM 1.0.0-rc14.
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 8 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
1 The problematic: How to prove properties in reasonable time?
2 Sequential algorithm
3 Parallel algorithms
4 Results
5 Todo
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 9 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
First parallel implementation: ParAAM-L-SA-state
main thread SenderAggregator N = p − 1 Eval actors
w o r k l i s t = empty l i s t
v i s i t e d = empty s e t
shared data
w o r k l i s t =
w o r k l i s t ∪{ i n i t i a l s t a t e }
Ö Ô Ø
send c u r r e n t w o r k l i s t
wait
r e c e i v e new w o r k l i s t
ÙÒØ Ð w o r k l i s t i s empty
ÓÖ 
 s t a t e
from c u r r e n t w o r k l i s t
send s t a t e
update
N r e c e i v e d
send f i n i s h e d
e v a l u a t e s t a t e
send r e s u l t s
to Eval n◦ i%N
I name this implementation
ParAAM-L-SA-state, for ParAAM – Loop – SenderAggregator – state.
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 10 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
First alternative: ParAAM-L-SA-set
main thread SenderAggregator N = p − 1 Eval actors
w o r k l i s t = empty l i s t
v i s i t e d = empty s e t
shared data
w o r k l i s t =
w o r k l i s t ∪{ i n i t i a l s t a t e }
Ö Ô Ø
send c u r r e n t w o r k l i s t
wait
r e c e i v e new w o r k l i s t
ÙÒØ Ð w o r k l i s t i s empty
f o r e a c h s e t
from c u r r e n t w o r k l i s t
send s e t
update
N r e c e i v e d
send f i n i s h e d
f o r e a c h s t a t e from s e t
e v a l u a t e s t a t e
send r e s u l t s
to Eval n◦ i%N
First improvement: send more than one state at a time. Set a set of states.
ParAAM-L-SA-set, for ParAAM – Loop – SenderAggregator – set.
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 11 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Second alternative: ParAAM-L-SA-part
main thread SenderAggregator N = p − 1 Eval actors
w o r k l i s t = empty l i s t
v i s i t e d = empty s e t
shared data
w o r k l i s t =
w o r k l i s t ∪{ i n i t i a l s t a t e }
Ö Ô Ø
send c u r r e n t w o r k l i s t
wait
r e c e i v e new w o r k l i s t
ÙÒØ Ð w o r k l i s t i s empty
f o r e a c h e qual part
from c u r r e n t w o r k l i s t
send part
update
N r e c e i v e d
send f i n i s h e d
f o r e a c h s t a t e from part
e v a l u a t e s t a t e
send r e s u l t s
to Eval n◦ i
Other possibility: send “equals” part of the worklist.
ParAAM-L-SA-part, for ParAAM – Loop – SenderAggregator – part.
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 12 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
3×3 parallel implementations
ParAAM-L-SA-state ParAAM-C-S-state ParAAM-C-state state
SeqAAMLS
ParAAM-L-SA-set ParAAM-C-S-set ParAAM-C-set set
ParAAM-L-SA-part ParAAM-C-S-part ParAAM-C-part part
L-SA C-S C
Loop – SenderAggregator Concurrent – Sender Concurrent
1 special actor
p-1 eval actors
main loop (with a barrier)
SA send worklist
each eval actor send results to SA
1 special actor
p-1 eval actors
no barrier
S send worklist
each eval actor update
0 special actor
p eval actors
no barrier
each eval actor send worklist
each eval actor update
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 13 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Other strategy: ParAAM-C-S-state
main thread Sender N = p − 1 Eval actors
w o r k l i s t = empty l i s t
v i s i t e d = empty s e t
shared data
send s t a r t
wait send i n i t i a l s t a t e
ÓÖ 
 ( state , a c t o r )
from c u r r e n t w o r k l i s t
and a v a i l a b l e Eval a c t o r s
send s t a t e to a c t o r
w o r k l i s t i s empty
and a l l Eval a c t o r s a v a i l a b l e
send f i n i s h e d
e v a l u a t e s t a t e
update (with synchronization)
send a v a i l a b l e
to Eval n◦ 0
Eval n◦ i available
I name this implementation
ParAAM-C-S-state, for ParAAM – Concurrent – Sender – state.
And these similar improvements:
ParAAM-C-S-set, for ParAAM – Concurrent – Sender – set and
ParAAM-C-S-part, for ParAAM – Concurrent – Sender – part.
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 14 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Last strategy: ParAAM-C-state
main thread N = p Eval actors
v i s i t e d = empty s e t
a c t o r s = empty l i s t
shared data
send s t a r t
wait send i n i t i a l s t a t e
e v a l u a t e s t a t e
update (with synchronization)
ÓÖ 
 ( state , a c t o r )
from c u r r e n t w o r k l i s t
and a v a i l a b l e Eval a c t o r s
send s t a t e to a c t o r
w o r k l i s t i s empty
and a l l Eval a c t o r s a v a i l a b l e
send f i n i s h e d
I name this implementation
ParAAM-C-state, for ParAAM – Concurrent – state.
And these similar improvements:
ParAAM-C-set, for ParAAM – Concurrent – set and
ParAAM-C-part, for ParAAM – Concurrent – part.
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 15 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
1 The problematic: How to prove properties in reasonable time?
2 Sequential algorithm
3 Parallel algorithms
4 Results
5 Todo
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 16 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Computation time of all implementations
0
2
4
6
8
10
12
0 2 4 6 8 10 12 14 16 18 20
time(seconds)
p
SeqAAMLS
ParAAM-L-SA-state
ParAAM-L-SA-set
ParAAM-L-SA-part
ParAAM-C-S-state
ParAAM-C-S-set
ParAAM-C-S-part
ParAAM-C-state
ParAAM-C-set
ParAAM-C-part
Results computed on Sergey/jfp/primtest.scm
Statistic computed with SeqAAMLS
# state: 243472
# final: 1 (Int)
# error: 1
# already visited: 48430
Worklist max size: 5646
Max sizes of successors: 6
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 17 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Speedup
0
2
4
6
8
10
0 2 4 6 8 10 12 14 16 18 20
speedup
p
0
0.5
1
1.5
2
2.5
3
0 2 4 6 8 10 12 14 16 18 20
time(seconds)
p
SeqAAMLS
ParAAM-L-SA-state
ParAAM-L-SA-set
ParAAM-L-SA-part
ParAAM-C-S-state
ParAAM-C-S-set
ParAAM-C-S-part
ParAAM-C-state
ParAAM-C-set
ParAAM-C-part
speedup = time of SeqAAMLS
time
(Super-linear speedup is unexplained for now!)
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 18 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Efficiency
0
0.2
2 ¡
2 ¢
2 £
1
¤ ¥
¤ ¡
0 2 4 6 8 10 12 14 16 18 20
effiency
p
0
2
4
6
8
10
0 2 4 6 8 10 12 14 16 18 20
speedup
p
SeqAAMLS
ParAAM-L-SA-state
ParAAM-L-SA-set
ParAAM-L-SA-part
ParAAM-C-S-state
ParAAM-C-S-set
ParAAM-C-S-part
ParAAM-C-state
ParAAM-C-set
ParAAM-C-part
efficiency = speedup
p
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 19 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
1 The problematic: How to prove properties in reasonable time?
2 Sequential algorithm
3 Parallel algorithms
4 Results
5 Todo
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 20 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Done / Todo
Implementation is (almost) done
(Need little checkings,
and maybe change the update of visited set for the worst implementations.)
Todo
Select which Scheme examples to use to produce final benchmarks
and estimate computation times
Run computations and collect data (benchmarks and some statistics)
Sort data and finalize analyzes
Write and write again
(some parts of theoretical background
can be taken from preparatory work)
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 21 / 22
An Efficient and
Parallel Abstract
Interpreter
in Scala
—
3×3 Parallel
Implementations
The problematic
Sequential
algorithm
Parallel
algorithms
Results
Todo
Thank you!
Questions time. . .
Implementation:
Scala-Par-AM – https:// Ø Ù
 غÓÖ »ÇÈ Å /scala-par-am/
This presentation on
https://×Ô Ö 
 º
ÓÑ»ÓÔ Ñ /
efficient-parallel-abstract-interpreter-in-scala-3x3-implementations
Document, LATEX sources, other references and previous presentations on
https://bitbucket.org/OPiMedia/efficient-parallel-abstract-interpreter-in-scala
An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 22 / 22

More Related Content

What's hot

01. design & analysis of agorithm intro & complexity analysis
01. design & analysis of agorithm intro & complexity analysis01. design & analysis of agorithm intro & complexity analysis
01. design & analysis of agorithm intro & complexity analysisOnkar Nath Sharma
 
Minicourse on Network Science
Minicourse on Network ScienceMinicourse on Network Science
Minicourse on Network SciencePavel Loskot
 
Algorithm chapter 2
Algorithm chapter 2Algorithm chapter 2
Algorithm chapter 2chidabdu
 
01 Analysis of Algorithms: Introduction
01 Analysis of Algorithms: Introduction01 Analysis of Algorithms: Introduction
01 Analysis of Algorithms: IntroductionAndres Mendez-Vazquez
 
Design and Analysis of Algorithms
Design and Analysis of AlgorithmsDesign and Analysis of Algorithms
Design and Analysis of AlgorithmsSwapnil Agrawal
 
5.5 back tracking 02
5.5 back tracking 025.5 back tracking 02
5.5 back tracking 02Krish_ver2
 
Analysis Of Algorithms I
Analysis Of Algorithms IAnalysis Of Algorithms I
Analysis Of Algorithms ISri Prasanna
 
Chapter 06 boolean algebra
Chapter 06 boolean algebraChapter 06 boolean algebra
Chapter 06 boolean algebraIIUI
 
Algorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms IAlgorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms IMohamed Loey
 
Lecture 3 insertion sort and complexity analysis
Lecture 3   insertion sort and complexity analysisLecture 3   insertion sort and complexity analysis
Lecture 3 insertion sort and complexity analysisjayavignesh86
 
Algorithms Lecture 1: Introduction to Algorithms
Algorithms Lecture 1: Introduction to AlgorithmsAlgorithms Lecture 1: Introduction to Algorithms
Algorithms Lecture 1: Introduction to AlgorithmsMohamed Loey
 
Robust fuzzy-observer-design-for-nonlinear-systems
Robust fuzzy-observer-design-for-nonlinear-systemsRobust fuzzy-observer-design-for-nonlinear-systems
Robust fuzzy-observer-design-for-nonlinear-systemsCemal Ardil
 
Design and Analysis of algorithms
Design and Analysis of algorithmsDesign and Analysis of algorithms
Design and Analysis of algorithmsDr. Rupa Ch
 
Data Structures and Algorithm Analysis
Data Structures  and  Algorithm AnalysisData Structures  and  Algorithm Analysis
Data Structures and Algorithm AnalysisMary Margarat
 
Advanced data structures slide 1 2
Advanced data structures slide 1 2Advanced data structures slide 1 2
Advanced data structures slide 1 2jomerson remorosa
 

What's hot (20)

01. design & analysis of agorithm intro & complexity analysis
01. design & analysis of agorithm intro & complexity analysis01. design & analysis of agorithm intro & complexity analysis
01. design & analysis of agorithm intro & complexity analysis
 
Control assignment#1
Control assignment#1Control assignment#1
Control assignment#1
 
Minicourse on Network Science
Minicourse on Network ScienceMinicourse on Network Science
Minicourse on Network Science
 
Design & Analysis Of Algorithm
Design & Analysis Of AlgorithmDesign & Analysis Of Algorithm
Design & Analysis Of Algorithm
 
Algorithm chapter 2
Algorithm chapter 2Algorithm chapter 2
Algorithm chapter 2
 
01 Analysis of Algorithms: Introduction
01 Analysis of Algorithms: Introduction01 Analysis of Algorithms: Introduction
01 Analysis of Algorithms: Introduction
 
Design and Analysis of Algorithms
Design and Analysis of AlgorithmsDesign and Analysis of Algorithms
Design and Analysis of Algorithms
 
5.5 back tracking 02
5.5 back tracking 025.5 back tracking 02
5.5 back tracking 02
 
Analysis Of Algorithms I
Analysis Of Algorithms IAnalysis Of Algorithms I
Analysis Of Algorithms I
 
Chapter 06 boolean algebra
Chapter 06 boolean algebraChapter 06 boolean algebra
Chapter 06 boolean algebra
 
chapter 1
chapter 1chapter 1
chapter 1
 
Algorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms IAlgorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms I
 
Lecture 3 insertion sort and complexity analysis
Lecture 3   insertion sort and complexity analysisLecture 3   insertion sort and complexity analysis
Lecture 3 insertion sort and complexity analysis
 
Algorithms Lecture 1: Introduction to Algorithms
Algorithms Lecture 1: Introduction to AlgorithmsAlgorithms Lecture 1: Introduction to Algorithms
Algorithms Lecture 1: Introduction to Algorithms
 
Robust fuzzy-observer-design-for-nonlinear-systems
Robust fuzzy-observer-design-for-nonlinear-systemsRobust fuzzy-observer-design-for-nonlinear-systems
Robust fuzzy-observer-design-for-nonlinear-systems
 
Design and Analysis of algorithms
Design and Analysis of algorithmsDesign and Analysis of algorithms
Design and Analysis of algorithms
 
Data Structures and Algorithm Analysis
Data Structures  and  Algorithm AnalysisData Structures  and  Algorithm Analysis
Data Structures and Algorithm Analysis
 
Advanced data structures slide 1 2
Advanced data structures slide 1 2Advanced data structures slide 1 2
Advanced data structures slide 1 2
 
Algorithm
AlgorithmAlgorithm
Algorithm
 
Algorithm
AlgorithmAlgorithm
Algorithm
 

Similar to An Efficient and Parallel Abstract Interpreter in Scala — 3x3 Parallel Implementations

Convolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoConvolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoSeongwon Hwang
 
Matlab solved problems
Matlab solved problemsMatlab solved problems
Matlab solved problemsMake Mannan
 
Open GL 04 linealgos
Open GL 04 linealgosOpen GL 04 linealgos
Open GL 04 linealgosRoziq Bahtiar
 
SYSTEM IDENTIFICATION USING CEREBELLAR MODEL ARITHMETIC COMPUTER
SYSTEM IDENTIFICATION USING CEREBELLAR MODEL ARITHMETIC COMPUTERSYSTEM IDENTIFICATION USING CEREBELLAR MODEL ARITHMETIC COMPUTER
SYSTEM IDENTIFICATION USING CEREBELLAR MODEL ARITHMETIC COMPUTERTarun Kumar
 
Searching techniques with progrms
Searching techniques with progrmsSearching techniques with progrms
Searching techniques with progrmsMisssaxena
 
Lesson_8_DeepLearning.pdf
Lesson_8_DeepLearning.pdfLesson_8_DeepLearning.pdf
Lesson_8_DeepLearning.pdfssuser7f0b19
 
Chapter10. Realization of Digital Filter.pptx
Chapter10. Realization of Digital Filter.pptxChapter10. Realization of Digital Filter.pptx
Chapter10. Realization of Digital Filter.pptxRajGopalMishra4
 
STate Space Analysis
STate Space AnalysisSTate Space Analysis
STate Space AnalysisHussain K
 
Compiler Construction | Lecture 11 | Monotone Frameworks
Compiler Construction | Lecture 11 | Monotone FrameworksCompiler Construction | Lecture 11 | Monotone Frameworks
Compiler Construction | Lecture 11 | Monotone FrameworksEelco Visser
 
HPX: C++11 runtime система для параллельных и распределённых вычислений
HPX: C++11 runtime система для параллельных и распределённых вычисленийHPX: C++11 runtime система для параллельных и распределённых вычислений
HPX: C++11 runtime система для параллельных и распределённых вычисленийPlatonov Sergey
 
Lecture 2: Stochastic Hydrology
Lecture 2: Stochastic Hydrology Lecture 2: Stochastic Hydrology
Lecture 2: Stochastic Hydrology Amro Elfeki
 
A Proposition for Business Process Modeling
A Proposition for Business Process ModelingA Proposition for Business Process Modeling
A Proposition for Business Process ModelingAng Chen
 
Chapter 2&3 (java fundamentals and Control Structures).ppt
Chapter 2&3 (java fundamentals and Control Structures).pptChapter 2&3 (java fundamentals and Control Structures).ppt
Chapter 2&3 (java fundamentals and Control Structures).ppthenokmetaferia1
 
Deep learning study 2
Deep learning study 2Deep learning study 2
Deep learning study 2San Kim
 

Similar to An Efficient and Parallel Abstract Interpreter in Scala — 3x3 Parallel Implementations (20)

An Efficient and Parallel Abstract Interpreter in Scala — First Algorithm
An Efficient and Parallel Abstract Interpreter in Scala — First AlgorithmAn Efficient and Parallel Abstract Interpreter in Scala — First Algorithm
An Efficient and Parallel Abstract Interpreter in Scala — First Algorithm
 
Convolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoConvolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in Theano
 
Ml lesson 4 8
Ml lesson 4 8Ml lesson 4 8
Ml lesson 4 8
 
AlgorithmAnalysis2.ppt
AlgorithmAnalysis2.pptAlgorithmAnalysis2.ppt
AlgorithmAnalysis2.ppt
 
Matlab solved problems
Matlab solved problemsMatlab solved problems
Matlab solved problems
 
Open GL 04 linealgos
Open GL 04 linealgosOpen GL 04 linealgos
Open GL 04 linealgos
 
SYSTEM IDENTIFICATION USING CEREBELLAR MODEL ARITHMETIC COMPUTER
SYSTEM IDENTIFICATION USING CEREBELLAR MODEL ARITHMETIC COMPUTERSYSTEM IDENTIFICATION USING CEREBELLAR MODEL ARITHMETIC COMPUTER
SYSTEM IDENTIFICATION USING CEREBELLAR MODEL ARITHMETIC COMPUTER
 
redes neuronais
redes neuronaisredes neuronais
redes neuronais
 
Searching techniques with progrms
Searching techniques with progrmsSearching techniques with progrms
Searching techniques with progrms
 
Lesson_8_DeepLearning.pdf
Lesson_8_DeepLearning.pdfLesson_8_DeepLearning.pdf
Lesson_8_DeepLearning.pdf
 
Chapter10. Realization of Digital Filter.pptx
Chapter10. Realization of Digital Filter.pptxChapter10. Realization of Digital Filter.pptx
Chapter10. Realization of Digital Filter.pptx
 
STate Space Analysis
STate Space AnalysisSTate Space Analysis
STate Space Analysis
 
Compiler Construction | Lecture 11 | Monotone Frameworks
Compiler Construction | Lecture 11 | Monotone FrameworksCompiler Construction | Lecture 11 | Monotone Frameworks
Compiler Construction | Lecture 11 | Monotone Frameworks
 
ASQ Talk v4
ASQ Talk v4ASQ Talk v4
ASQ Talk v4
 
HPX: C++11 runtime система для параллельных и распределённых вычислений
HPX: C++11 runtime система для параллельных и распределённых вычисленийHPX: C++11 runtime система для параллельных и распределённых вычислений
HPX: C++11 runtime система для параллельных и распределённых вычислений
 
Lecture 2: Stochastic Hydrology
Lecture 2: Stochastic Hydrology Lecture 2: Stochastic Hydrology
Lecture 2: Stochastic Hydrology
 
A Proposition for Business Process Modeling
A Proposition for Business Process ModelingA Proposition for Business Process Modeling
A Proposition for Business Process Modeling
 
Integration formulas
Integration formulasIntegration formulas
Integration formulas
 
Chapter 2&3 (java fundamentals and Control Structures).ppt
Chapter 2&3 (java fundamentals and Control Structures).pptChapter 2&3 (java fundamentals and Control Structures).ppt
Chapter 2&3 (java fundamentals and Control Structures).ppt
 
Deep learning study 2
Deep learning study 2Deep learning study 2
Deep learning study 2
 

More from 🌳 Olivier Pirson — OPi 🇧🇪🇫🇷🇬🇧 🐧 👨‍💻 👨‍🔬 (7)

Parallel Numerical Verification of the σ_odd problem
Parallel Numerical Verification of the σ_odd problemParallel Numerical Verification of the σ_odd problem
Parallel Numerical Verification of the σ_odd problem
 
An Efficient and Parallel Abstract Interpreter in Scala — Presentation
An Efficient and Parallel Abstract Interpreter in Scala — PresentationAn Efficient and Parallel Abstract Interpreter in Scala — Presentation
An Efficient and Parallel Abstract Interpreter in Scala — Presentation
 
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — ...
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — ...An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — ...
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — ...
 
Dualité lagrangienne
Dualité lagrangienneDualité lagrangienne
Dualité lagrangienne
 
Brief journey in the big world of Integer Programming with the Knapsack
Brief journey in the big world of Integer Programming with the KnapsackBrief journey in the big world of Integer Programming with the Knapsack
Brief journey in the big world of Integer Programming with the Knapsack
 
Disjoint Compatible Perfect Matchings
Disjoint Compatible Perfect MatchingsDisjoint Compatible Perfect Matchings
Disjoint Compatible Perfect Matchings
 
Persistent Search Trees
Persistent Search TreesPersistent Search Trees
Persistent Search Trees
 

Recently uploaded

Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCRCall Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCRlizamodels9
 
Evidences of Evolution General Biology 2
Evidences of Evolution General Biology 2Evidences of Evolution General Biology 2
Evidences of Evolution General Biology 2John Carlo Rollon
 
Solution chemistry, Moral and Normal solutions
Solution chemistry, Moral and Normal solutionsSolution chemistry, Moral and Normal solutions
Solution chemistry, Moral and Normal solutionsHajira Mahmood
 
Twin's paradox experiment is a meassurement of the extra dimensions.pptx
Twin's paradox experiment is a meassurement of the extra dimensions.pptxTwin's paradox experiment is a meassurement of the extra dimensions.pptx
Twin's paradox experiment is a meassurement of the extra dimensions.pptxEran Akiva Sinbar
 
Artificial Intelligence In Microbiology by Dr. Prince C P
Artificial Intelligence In Microbiology by Dr. Prince C PArtificial Intelligence In Microbiology by Dr. Prince C P
Artificial Intelligence In Microbiology by Dr. Prince C PPRINCE C P
 
Module 4: Mendelian Genetics and Punnett Square
Module 4:  Mendelian Genetics and Punnett SquareModule 4:  Mendelian Genetics and Punnett Square
Module 4: Mendelian Genetics and Punnett SquareIsiahStephanRadaza
 
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...lizamodels9
 
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.PraveenaKalaiselvan1
 
Vision and reflection on Mining Software Repositories research in 2024
Vision and reflection on Mining Software Repositories research in 2024Vision and reflection on Mining Software Repositories research in 2024
Vision and reflection on Mining Software Repositories research in 2024AyushiRastogi48
 
Gas_Laws_powerpoint_notes.ppt for grade 10
Gas_Laws_powerpoint_notes.ppt for grade 10Gas_Laws_powerpoint_notes.ppt for grade 10
Gas_Laws_powerpoint_notes.ppt for grade 10ROLANARIBATO3
 
RESPIRATORY ADAPTATIONS TO HYPOXIA IN HUMNAS.pptx
RESPIRATORY ADAPTATIONS TO HYPOXIA IN HUMNAS.pptxRESPIRATORY ADAPTATIONS TO HYPOXIA IN HUMNAS.pptx
RESPIRATORY ADAPTATIONS TO HYPOXIA IN HUMNAS.pptxFarihaAbdulRasheed
 
Harmful and Useful Microorganisms Presentation
Harmful and Useful Microorganisms PresentationHarmful and Useful Microorganisms Presentation
Harmful and Useful Microorganisms Presentationtahreemzahra82
 
Transposable elements in prokaryotes.ppt
Transposable elements in prokaryotes.pptTransposable elements in prokaryotes.ppt
Transposable elements in prokaryotes.pptArshadWarsi13
 
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxSOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxkessiyaTpeter
 
‏‏VIRUS - 123455555555555555555555555555555555555555
‏‏VIRUS -  123455555555555555555555555555555555555555‏‏VIRUS -  123455555555555555555555555555555555555555
‏‏VIRUS - 123455555555555555555555555555555555555555kikilily0909
 
Call Girls in Munirka Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Munirka Delhi 💯Call Us 🔝8264348440🔝Call Girls in Munirka Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Munirka Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
zoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzohaibmir069
 
TOPIC 8 Temperature and Heat.pdf physics
TOPIC 8 Temperature and Heat.pdf physicsTOPIC 8 Temperature and Heat.pdf physics
TOPIC 8 Temperature and Heat.pdf physicsssuserddc89b
 
insect anatomy and insect body wall and their physiology
insect anatomy and insect body wall and their  physiologyinsect anatomy and insect body wall and their  physiology
insect anatomy and insect body wall and their physiologyDrAnita Sharma
 

Recently uploaded (20)

Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCRCall Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
 
Evidences of Evolution General Biology 2
Evidences of Evolution General Biology 2Evidences of Evolution General Biology 2
Evidences of Evolution General Biology 2
 
Solution chemistry, Moral and Normal solutions
Solution chemistry, Moral and Normal solutionsSolution chemistry, Moral and Normal solutions
Solution chemistry, Moral and Normal solutions
 
Twin's paradox experiment is a meassurement of the extra dimensions.pptx
Twin's paradox experiment is a meassurement of the extra dimensions.pptxTwin's paradox experiment is a meassurement of the extra dimensions.pptx
Twin's paradox experiment is a meassurement of the extra dimensions.pptx
 
Artificial Intelligence In Microbiology by Dr. Prince C P
Artificial Intelligence In Microbiology by Dr. Prince C PArtificial Intelligence In Microbiology by Dr. Prince C P
Artificial Intelligence In Microbiology by Dr. Prince C P
 
Module 4: Mendelian Genetics and Punnett Square
Module 4:  Mendelian Genetics and Punnett SquareModule 4:  Mendelian Genetics and Punnett Square
Module 4: Mendelian Genetics and Punnett Square
 
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
 
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
 
Vision and reflection on Mining Software Repositories research in 2024
Vision and reflection on Mining Software Repositories research in 2024Vision and reflection on Mining Software Repositories research in 2024
Vision and reflection on Mining Software Repositories research in 2024
 
Gas_Laws_powerpoint_notes.ppt for grade 10
Gas_Laws_powerpoint_notes.ppt for grade 10Gas_Laws_powerpoint_notes.ppt for grade 10
Gas_Laws_powerpoint_notes.ppt for grade 10
 
RESPIRATORY ADAPTATIONS TO HYPOXIA IN HUMNAS.pptx
RESPIRATORY ADAPTATIONS TO HYPOXIA IN HUMNAS.pptxRESPIRATORY ADAPTATIONS TO HYPOXIA IN HUMNAS.pptx
RESPIRATORY ADAPTATIONS TO HYPOXIA IN HUMNAS.pptx
 
Harmful and Useful Microorganisms Presentation
Harmful and Useful Microorganisms PresentationHarmful and Useful Microorganisms Presentation
Harmful and Useful Microorganisms Presentation
 
Transposable elements in prokaryotes.ppt
Transposable elements in prokaryotes.pptTransposable elements in prokaryotes.ppt
Transposable elements in prokaryotes.ppt
 
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxSOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
 
Hot Sexy call girls in Moti Nagar,🔝 9953056974 🔝 escort Service
Hot Sexy call girls in  Moti Nagar,🔝 9953056974 🔝 escort ServiceHot Sexy call girls in  Moti Nagar,🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Moti Nagar,🔝 9953056974 🔝 escort Service
 
‏‏VIRUS - 123455555555555555555555555555555555555555
‏‏VIRUS -  123455555555555555555555555555555555555555‏‏VIRUS -  123455555555555555555555555555555555555555
‏‏VIRUS - 123455555555555555555555555555555555555555
 
Call Girls in Munirka Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Munirka Delhi 💯Call Us 🔝8264348440🔝Call Girls in Munirka Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Munirka Delhi 💯Call Us 🔝8264348440🔝
 
zoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistan
 
TOPIC 8 Temperature and Heat.pdf physics
TOPIC 8 Temperature and Heat.pdf physicsTOPIC 8 Temperature and Heat.pdf physics
TOPIC 8 Temperature and Heat.pdf physics
 
insect anatomy and insect body wall and their physiology
insect anatomy and insect body wall and their  physiologyinsect anatomy and insect body wall and their  physiology
insect anatomy and insect body wall and their physiology
 

An Efficient and Parallel Abstract Interpreter in Scala — 3x3 Parallel Implementations

  • 1. Universit´e Libre de Bruxelles Computer Science Department MEMO-F524 Masters thesis An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations — Olivier Pirson — opi@opimedia.be orcid.org/0000-0001-6296-9659 March 22, 2019 (Last modifications: March 26, 2019) https://speakerdeck.com/opimedia/ efficient-parallel-abstract-interpreter-in-scala-3x3-implementations Vrije Universiteit Brussel Promotors Coen De Roover Wolfgang De Meuter Advisor Quentin Stievenart
  • 2. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo 1 The problematic: How to prove properties in reasonable time? 2 Sequential algorithm 3 Parallel algorithms 4 Results 5 Todo An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 2 / 22
  • 3. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo From undecidable problem to fast decidable technique We want prove properties about programs. But it is an undecidable problem. ↓ Abstract interpretation is a static analysis technique that evaluates abstraction of programs. Decidable but high time complexity. ↓ A possible way to make that faster is to parallelize. . . An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 3 / 22
  • 4. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Parallelization of Scala-AM Scala-AM “(Abstract) Abstract Machine Experiments using Scala” (forked around September 14, 2017) ↓ Restriction to the simplest abstract machine (AAM), without optimization Restriction to analyze only Scheme programs. ↓ 3×3 parallel implementations (ParAAM∗) with actors (Akka) ↓ Scala-Par-AM https://bitbucket.org/OPiMedia/scala-par-am/ An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 4 / 22
  • 5. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo 1 The problematic: How to prove properties in reasonable time? 2 Sequential algorithm 3 Parallel algorithms 4 Results 5 Todo An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 5 / 22
  • 6. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Worklist and step function, walk over the state graph (letrec ((abs (lambda (x) (if (>= x 0) x (- x))))) (abs -42)) initial state (abs -42) step function (if (>= x 0) x (- x)) (>= x 0) ko(Bool) x (- x) ko(Int) ( Ò ( × x ) ( (>= x 0) x (− x ) ) ) ( × −42) # state: 8 # final value: 1 (Int) # already visited: 1 Worklist max size: 2 Sizes of successors: # size 1: 6 # size 2: 1 Essential parts of abstract interpretation for this presentation: main loop on a worklist of states the step function: takes a state and returns a set of states Sequential algorithm (Scala code of SeqAAM) w o r k l i s t = empty l i s t v i s i t e d = empty s e t w o r k l i s t = w o r k l i s t ∪ { i n i t i a l s t a t e } Ö Ô Ø s t a t e = p i c k one from w o r k l i s t s t a t e not i n v i s i t e d Ø Ò v i s i t e d = v i s i t e d ∪ { s t a t e } e v a l u a t i o n of s t a t e (essentially s u c c e s s o r s = ste p ( s t a t e )) w o r k l i s t = w o r k l i s t ∪ s u c c e s s o r s other update (final values. . . ) ÙÒØ Ð w o r k l i s t i s empty The completed state graph does not depend of the order of the evaluation. Crucial for parallelization. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 6 / 22
  • 7. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Very simple Scheme example, bigger state graph (letrec ((fibonacci (lambda (n) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))))) (fibonacci 10)) (fibonacci 10) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) ko(Bool) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) ko(Int) (fibonacci (- n 1)) (- n 1) ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) ko(Bool) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) ko(Int) (fibonacci (- n 1))ko(Int) (fibonacci (- n 1)) (- n 1)(fibonacci (- n 2)) (- n 1) ko(Int)(- n 2) ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1)(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) ko(Bool) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) ko(Bool) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))(+ (fibonacci (- n 1)) (fibonacci (- n 2))) ko(Int) ko(Int) (fibonacci (- n 2)) (fibonacci (- n 2)) ko(Int) (fibonacci (- n 1))ko(Int) ko(Int) (fibonacci (- n 1))(fibonacci (- n 1)) (- n 1)(fibonacci (- n 2)) (- n 1)(- n 1) (- n 2) (- n 2) ko(Int) ko(Int) ko(Int) ko(Int)(- n 2) ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) (<= n 1) (<= n 1)(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) ko(Bool)ko(Bool) ko(Bool) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))(+ (fibonacci (- n 1)) (fibonacci (- n 2)))nn (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n n ko(Int) (fibonacci (- n 1))ko(Int) ko(Int) ko(Int)(fibonacci (- n 1)) (fibonacci (- n 1))ko(Int) ko(Int) ko(Int) ko(Int) ko(Int) (- n 1) (fibonacci (- n 2))(fibonacci (- n 2)) (- n 1) (- n 1) (fibonacci (- n 2))(fibonacci (- n 2)) (fibonacci (- n 2)) (- n 2) (- n 2) ko(Int) (- n 2) (- n 2) ko(Int) ko(Int) (- n 2) ko(Int) ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) ko(Int)(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))ko(Int) ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) ko(Bool) ko(Bool)(<= n 1) ko(Bool) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) nn nn(+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) ko(Bool) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) ko(Int) ko(Int) ko(Int) ko(Int) ko(Int) ko(Int) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n ko(Int) (fibonacci (- n 1)) ko(Int) (fibonacci (- n 1)) ko(Int) (fibonacci (- n 2))(fibonacci (- n 2))(fibonacci (- n 2)) (fibonacci (- n 2))(fibonacci (- n 2)) ko(Int) (fibonacci (- n 1)) ko(Int) (fibonacci (- n 1)) ko(Int) (- n 1) (- n 1) (- n 2) (- n 2)(- n 2)(- n 2)(- n 2) (- n 1) (- n 1) ko(Int) ko(Int) ko(Int)ko(Int) ko(Int) ko(Int)ko(Int)ko(Int) ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))))(if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) (<= n 1) (<= n 1) ko(Bool) ko(Bool)ko(Bool) n n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))(+ (fibonacci (- n 1)) (fibonacci (- n 2))) n n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n n(+ (fibonacci (- n 1)) (fibonacci (- n 2))) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))(+ (fibonacci (- n 1)) (fibonacci (- n 2)))n n ko(Int)(fibonacci (- n 1))ko(Int) ko(Int)ko(Int) ko(Int) ko(Int)ko(Int) ko(Int) ko(Int) (fibonacci (- n 2)) (- n 1) (- n 2) ko(Int) ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (<= n 1) ko(Bool) (+ (fibonacci (- n 1)) (fibonacci (- n 2))) n n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))n (+ (fibonacci (- n 1)) (fibonacci (- n 2))) (fibonacci (- n 1)) ko(Int) ko(Int) ko(Int) (- n 1) ko(Int) (if (<= n 1) n (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) ( Ò ( f i b o n a c c i n ) ( (<= n 1) n (+ ( f i b o n a c c i (− n 1)) ( f i b o n a c c i (− n 2 ) ) ) ) ) ( f i b o n a c c i 10) # state: 276 # final value: 1 (Int) # already visited: 71 Worklist max size: 24 Sizes of successors: # size 1: 231 # size 2: 13 # size 3: 3 # size 4: 2 # size 6: 12 An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 7 / 22
  • 8. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Worklist implementations Possible (immutable) data structures to implement the worklist (tested on Sergey/jfp/primtest.scm) • list of states 2.304s (Scala code of SeqAAM) s s s s s s • set of states 2.466s (Scala code of SeqAAMS) s s s s s s • list of sets of states 2.315s (Scala code of SeqAAMLS) s s s s s s avoid useless concatenations Each set corresponds to a result of the step function. Selected for parallel implementations and SeqAAMLS becomes the reference for comparisons. These time results and following are averages on 10 repetitions (after 3 repetitions skipped), made on Intel Xeon Gold 6148 2.40GHz, 20 cores available (VUB Hydra cluster), with Scala 2.12.7 – Akka 2.5.21 – Java 1.8.0 – GraalVM 1.0.0-rc14. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 8 / 22
  • 9. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo 1 The problematic: How to prove properties in reasonable time? 2 Sequential algorithm 3 Parallel algorithms 4 Results 5 Todo An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 9 / 22
  • 10. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo First parallel implementation: ParAAM-L-SA-state main thread SenderAggregator N = p − 1 Eval actors w o r k l i s t = empty l i s t v i s i t e d = empty s e t shared data w o r k l i s t = w o r k l i s t ∪{ i n i t i a l s t a t e } Ö Ô Ø send c u r r e n t w o r k l i s t wait r e c e i v e new w o r k l i s t ÙÒØ Ð w o r k l i s t i s empty ÓÖ s t a t e from c u r r e n t w o r k l i s t send s t a t e update N r e c e i v e d send f i n i s h e d e v a l u a t e s t a t e send r e s u l t s to Eval n◦ i%N I name this implementation ParAAM-L-SA-state, for ParAAM – Loop – SenderAggregator – state. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 10 / 22
  • 11. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo First alternative: ParAAM-L-SA-set main thread SenderAggregator N = p − 1 Eval actors w o r k l i s t = empty l i s t v i s i t e d = empty s e t shared data w o r k l i s t = w o r k l i s t ∪{ i n i t i a l s t a t e } Ö Ô Ø send c u r r e n t w o r k l i s t wait r e c e i v e new w o r k l i s t ÙÒØ Ð w o r k l i s t i s empty f o r e a c h s e t from c u r r e n t w o r k l i s t send s e t update N r e c e i v e d send f i n i s h e d f o r e a c h s t a t e from s e t e v a l u a t e s t a t e send r e s u l t s to Eval n◦ i%N First improvement: send more than one state at a time. Set a set of states. ParAAM-L-SA-set, for ParAAM – Loop – SenderAggregator – set. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 11 / 22
  • 12. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Second alternative: ParAAM-L-SA-part main thread SenderAggregator N = p − 1 Eval actors w o r k l i s t = empty l i s t v i s i t e d = empty s e t shared data w o r k l i s t = w o r k l i s t ∪{ i n i t i a l s t a t e } Ö Ô Ø send c u r r e n t w o r k l i s t wait r e c e i v e new w o r k l i s t ÙÒØ Ð w o r k l i s t i s empty f o r e a c h e qual part from c u r r e n t w o r k l i s t send part update N r e c e i v e d send f i n i s h e d f o r e a c h s t a t e from part e v a l u a t e s t a t e send r e s u l t s to Eval n◦ i Other possibility: send “equals” part of the worklist. ParAAM-L-SA-part, for ParAAM – Loop – SenderAggregator – part. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 12 / 22
  • 13. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo 3×3 parallel implementations ParAAM-L-SA-state ParAAM-C-S-state ParAAM-C-state state SeqAAMLS ParAAM-L-SA-set ParAAM-C-S-set ParAAM-C-set set ParAAM-L-SA-part ParAAM-C-S-part ParAAM-C-part part L-SA C-S C Loop – SenderAggregator Concurrent – Sender Concurrent 1 special actor p-1 eval actors main loop (with a barrier) SA send worklist each eval actor send results to SA 1 special actor p-1 eval actors no barrier S send worklist each eval actor update 0 special actor p eval actors no barrier each eval actor send worklist each eval actor update An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 13 / 22
  • 14. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Other strategy: ParAAM-C-S-state main thread Sender N = p − 1 Eval actors w o r k l i s t = empty l i s t v i s i t e d = empty s e t shared data send s t a r t wait send i n i t i a l s t a t e ÓÖ ( state , a c t o r ) from c u r r e n t w o r k l i s t and a v a i l a b l e Eval a c t o r s send s t a t e to a c t o r w o r k l i s t i s empty and a l l Eval a c t o r s a v a i l a b l e send f i n i s h e d e v a l u a t e s t a t e update (with synchronization) send a v a i l a b l e to Eval n◦ 0 Eval n◦ i available I name this implementation ParAAM-C-S-state, for ParAAM – Concurrent – Sender – state. And these similar improvements: ParAAM-C-S-set, for ParAAM – Concurrent – Sender – set and ParAAM-C-S-part, for ParAAM – Concurrent – Sender – part. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 14 / 22
  • 15. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Last strategy: ParAAM-C-state main thread N = p Eval actors v i s i t e d = empty s e t a c t o r s = empty l i s t shared data send s t a r t wait send i n i t i a l s t a t e e v a l u a t e s t a t e update (with synchronization) ÓÖ ( state , a c t o r ) from c u r r e n t w o r k l i s t and a v a i l a b l e Eval a c t o r s send s t a t e to a c t o r w o r k l i s t i s empty and a l l Eval a c t o r s a v a i l a b l e send f i n i s h e d I name this implementation ParAAM-C-state, for ParAAM – Concurrent – state. And these similar improvements: ParAAM-C-set, for ParAAM – Concurrent – set and ParAAM-C-part, for ParAAM – Concurrent – part. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 15 / 22
  • 16. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo 1 The problematic: How to prove properties in reasonable time? 2 Sequential algorithm 3 Parallel algorithms 4 Results 5 Todo An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 16 / 22
  • 17. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Computation time of all implementations 0 2 4 6 8 10 12 0 2 4 6 8 10 12 14 16 18 20 time(seconds) p SeqAAMLS ParAAM-L-SA-state ParAAM-L-SA-set ParAAM-L-SA-part ParAAM-C-S-state ParAAM-C-S-set ParAAM-C-S-part ParAAM-C-state ParAAM-C-set ParAAM-C-part Results computed on Sergey/jfp/primtest.scm Statistic computed with SeqAAMLS # state: 243472 # final: 1 (Int) # error: 1 # already visited: 48430 Worklist max size: 5646 Max sizes of successors: 6 An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 17 / 22
  • 18. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Speedup 0 2 4 6 8 10 0 2 4 6 8 10 12 14 16 18 20 speedup p 0 0.5 1 1.5 2 2.5 3 0 2 4 6 8 10 12 14 16 18 20 time(seconds) p SeqAAMLS ParAAM-L-SA-state ParAAM-L-SA-set ParAAM-L-SA-part ParAAM-C-S-state ParAAM-C-S-set ParAAM-C-S-part ParAAM-C-state ParAAM-C-set ParAAM-C-part speedup = time of SeqAAMLS time (Super-linear speedup is unexplained for now!) An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 18 / 22
  • 19. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Efficiency 0 0.2 2 ¡ 2 ¢ 2 £ 1 ¤ ¥ ¤ ¡ 0 2 4 6 8 10 12 14 16 18 20 effiency p 0 2 4 6 8 10 0 2 4 6 8 10 12 14 16 18 20 speedup p SeqAAMLS ParAAM-L-SA-state ParAAM-L-SA-set ParAAM-L-SA-part ParAAM-C-S-state ParAAM-C-S-set ParAAM-C-S-part ParAAM-C-state ParAAM-C-set ParAAM-C-part efficiency = speedup p An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 19 / 22
  • 20. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo 1 The problematic: How to prove properties in reasonable time? 2 Sequential algorithm 3 Parallel algorithms 4 Results 5 Todo An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 20 / 22
  • 21. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Done / Todo Implementation is (almost) done (Need little checkings, and maybe change the update of visited set for the worst implementations.) Todo Select which Scheme examples to use to produce final benchmarks and estimate computation times Run computations and collect data (benchmarks and some statistics) Sort data and finalize analyzes Write and write again (some parts of theoretical background can be taken from preparatory work) An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 21 / 22
  • 22. An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations The problematic Sequential algorithm Parallel algorithms Results Todo Thank you! Questions time. . . Implementation: Scala-Par-AM – https:// Ø Ù ØºÓÖ »ÇÈ Å /scala-par-am/ This presentation on https://×Ô Ö º ÓÑ»ÓÔ Ñ / efficient-parallel-abstract-interpreter-in-scala-3x3-implementations Document, LATEX sources, other references and previous presentations on https://bitbucket.org/OPiMedia/efficient-parallel-abstract-interpreter-in-scala An Efficient and Parallel Abstract Interpreter in Scala — 3×3 Parallel Implementations 22 / 22