Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Parallelizing an Interactive Theorem Prover
Functional Programming and Proofs with ACL2 David L. Rager ragerdl@gmail.com June 17, 2013
1 / 39
Parallelizing an Interactive Theorem Prover Functional Programming - - PowerPoint PPT Presentation
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Parallelizing an Interactive Theorem Prover Functional Programming and Proofs with ACL2 David L. Rager ragerdl@gmail.com June 17, 2013 1 /
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
1 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
2 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
3 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend 4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend 4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend 4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend 4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend 4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend 4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend 4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend 4 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Goal (2 sec) Subgoal 2 (7 sec) Subgoal 2.2 (1 sec) Subgoal 2.1 (3 sec) Subgoal 1 (1 sec) Subgoal 1' (5 sec) Subgoal 1'' (2 sec)
finished unstarted active pending
Legend
5 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
6 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Overview
7 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Interaction of Primitives, Threads, and Cores
Work queue Thread
spec-mv-let task
+ Worker threads CPU cores
Legend empty unassigned active pending 8 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Preparing ACL2
9 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Preparing ACL2
9 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Preparing ACL2
10 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Preparing ACL2
11 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Executing ACL2 in Parallel
12 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Executing ACL2 in Parallel
13 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Executing ACL2 in Parallel
Subgoal 4000 Subgoal 3999 Subgoal 4 Subgoal 3 Subgoal 2 Subgoal 1 pending thread active thread Legend 14 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Executing ACL2 in Parallel
Threads associated with Subgoals 4000 5 have already been recycled
15 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Overview
16 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Categorization Scheme
*taken from the 25 longest running theorems
17 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Execution Time
18 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Execution Time
19 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points “Grading” with Potential Speedup
20 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points “Grading” with Potential Speedup
21 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points “Grading” with Potential Speedup
22 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Conclusion
23 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Conclusion
24 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points The Future
25 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points Acknowledgements
26 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
27 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
evaluation propositional calculus BDDs equality uninterpreted function symbols rational linear arithmetic rewrite rules recursive definitions backward-chaining and forward-chaining metafunctions congruence-based rewriting
Simplification Destructor Elimination Fertilization Generalization Elimination of Irrelevance Induction
28 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Range Count of Subgoals Percentage of Subgoals 1µ to 50µ 6435 0.58% 51µ to 100µ 34174 3.05% 101µ to 150µ 25641 2.29% 151µ to 200µ 16211 1.45% 201µ to 250µ 12565 1.12% 251µ to 300µ 13171 1.18% 301µ to 350µ 12374 1.11% 351µ to 400µ 13976 1.25% 401µ to 450µ 17119 1.53% 451µ to 500µ 19341 1.73% 500+µ 947634 84.71%
29 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Test indicates speculative computation is useful?
Creates task for speculative computation Wait for speculative computation to complete Executes necessary computation Spec-mv-let encountered Unnecessary Useful Execute true branch Return Execute false branch Abort speculative computation (non-blocking) 30 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Obtain piece
Encounter parallelism primitive and parallelize further?
Active-R Waiting-R
Obtain idle resumptive core Child finishes
Active-S Waiting-S
Obtain idle starting core Yes
Idle Pending Thread Exit Thread Start
No Yes No No Yes
31 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
Encounter parallelism primitive and parallelize further?
No Yes
Encounter another parallelism primitive and parallelize further? Yes No
32 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
33 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
34 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
120 8 35 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
36 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
37 / 39
Introduction Parallelism Primitives Parallelizing ACL2 Evaluate Approach Conclusion Talking Points
38 / 39