ndseq: runtime checking for nondeterministic sequential specs...
TRANSCRIPT
![Page 1: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/1.jpg)
P A R A L L E L C O M P U T I N G L A B O R A T O R Y
EECS Electrical Engineering and
Computer Sciences
NDSeq: Runtime Checking for Nondeterministic Sequential Specs
of Parallel Correctness
Jacob Burnim, Tayfun Elmas, George Necula, Koushik Sen
University of California, Berkeley
![Page 2: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/2.jpg)
Goal: Decompose effort in addressing parallelism and functional correctness
2
Parallel program
Functional specification
ϕ Satisfies?
Parallel program
Functional specification
ϕ
Nondeterministic sequential
specification
![Page 3: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/3.jpg)
Goal: Decompose effort in addressing parallelism and functional correctness
3
Functional Correctness. Reason about
sequentially, without thread interleavings.
Parallelism Correctness. Handle independently of
complex & sequential functional properties.
Parallel program
Functional specification
ϕ
Nondeterministic sequential
specification
Nondeterministic sequential
specification
![Page 4: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/4.jpg)
Goal: Decompose effort in addressing parallelism and functional correctness
4
Parallel program
Nondeterministic sequential
specification
1. NDSeq: easy-to-write spec for parallelism.
2. Runtime checking of NDSeq specifications.
Functional specification
ϕ
![Page 5: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/5.jpg)
Outline ! Overview
! Motivating Example ! Nondeterministic Sequential (NDSeq)
Specifications for Parallel Correctness
! Runtime Checking of NDSeq Specifications
! Experimental Results
! Conclusion
5
![Page 6: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/6.jpg)
for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) if cost < min_cost: min_cost = cost min_item = i
Motivating Example
6
! Goal: Find minimum-cost item in list.
for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) if cost < min_cost: min_cost = cost min_item = i
Input: N items.
Output: min_cost and min_item.
![Page 7: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/7.jpg)
Motivating Example
7
! Goal: Find minimum-cost item in list.
for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) if cost < min_cost: min_cost = cost min_item = i`
for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) if cost < min_cost: min_cost = cost min_item = i`
for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) if cost < min_cost: min_cost = cost min_item = i
Computes cost of item i. Expensive.
Computes cheap lower bound on cost of i.
Prune when i cannot have minimum-cost.
![Page 8: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/8.jpg)
for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) if cost < min_cost: min_cost = cost min_item = i
Motivating Example
8
! Goal: Find minimum-cost item in list.
How do we parallelize this
code?
![Page 9: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/9.jpg)
Parallel Motivating Example
9
! Goal: Find min-cost item in list, in parallel.
, parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
Updates to best are protected by lock.
Loop iterations can be run in parallel.
![Page 10: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/10.jpg)
Parallel Motivating Example
9
! Goal: Find min-cost item in list, in parallel. , parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
Updates to best are protected by lock.
Loop iterations can be run in parallel. Claim: Parallelization
is clearly correct.
How can we specify this parallel
correctness?
![Page 11: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/11.jpg)
Specifying Parallel Correctness
10
! Idea: Use sequential program as spec.
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i)
if cost < min_cost: min_cost = cost min_item = i
Satisfies?
No.
![Page 12: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/12.jpg)
Parallel-Sequential Equivalence?
11
bound: 5 cost: 5
(1) bound: 5 cost: 5
(2) items: min_item: –!min_cost: ∞
prune?(1)
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
![Page 13: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/13.jpg)
Parallel-Sequential Equivalence?
11
bound: 5 cost: 5
(1) bound: 5 cost: 5
(2) items: min_item: –!min_cost: ∞
prune?(1)
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
prune?(2)
![Page 14: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/14.jpg)
Parallel-Sequential Equivalence?
11
bound: 5 cost: 5
(1) bound: 5 cost: 5
(2) items:
prune?(1)
update(2)
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
prune?(2)
min_item: (2)!min_cost: 5
![Page 15: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/15.jpg)
Parallel-Sequential Equivalence?
11
bound: 5 cost: 5
(1) bound: 5 cost: 5
(2) items:
prune?(1)
update(1)
update(2)
min_item: (2)!min_cost: 5
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
prune?(2)
![Page 16: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/16.jpg)
Parallel-Sequential Equivalence?
11
bound: 5 cost: 5
(1) bound: 5 cost: 5
(2) items:
prune?(1)
update(1)
update(2)
min_item: (2)!min_cost: 5
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
prune?(2)
prune?(1)
update(1)
prune?(2)
But sequential program: • Returns min_item = (1). • Prunes (2).
![Page 17: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/17.jpg)
Specifying Parallel Correctness
12
! Parallel program has freedom to:
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
Avoid pruning by scheduling check before updates.
Process items in a nondeterministic order.
![Page 18: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/18.jpg)
Specifying Parallel Correctness
12
! Parallel program has freedom to:
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
Avoid pruning by scheduling check before updates.
Process items in a nondeterministic order.
Must give sequential spec this freedom.
![Page 19: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/19.jpg)
Nondeterministic Sequential Spec
13
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
nd-for (i in [1..N]): c = min_cost b = lower_bound(i) if * && b >= c: continue cost = compute_cost(i)
if cost < min_cost: min_cost = cost min_item = i
Can choose not to prune item.
Runs iterations in any order.
![Page 20: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/20.jpg)
NDSeq Specification Patterns
14
! Found three recipes for adding *’s: 1. Optimistic Concurrent Computation
(optimistic work with conflict detection) 2. Redundant Computation Optimization
(e.g., pruning in branch-and-bound) 3. Irrelevant Computation
(e.g., updating a performance counter)
! With these recipes, fairly simple to write NDSeq specifications for our benchmarks.
![Page 21: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/21.jpg)
Nondeterministic Sequential Spec
15
! Parallelism correct if no more nondeterminism:
parallel-for (i in [1..N]): c = min_cost b = lower_bound(i) if b >= c: continue cost = compute_cost(i) synchronized (lock): if cost < min_cost: min_cost = cost min_item = i
nd-for (i in [1..N]): c = min_cost b = lower_bound(i) if * && b >= c: continue cost = compute_cost(i)
if cost < min_cost: min_cost = cost min_item = i
Satisfies?
Yes.
![Page 22: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/22.jpg)
Outline ! Overview
! Motivating Example
! Nondeterministic Sequential (NDSeq) Specifications for Parallel Correctness
! Runtime Checking of NDSeq Specs ! Experimental Results
! Conclusion
16
![Page 23: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/23.jpg)
Testing Parallelism Correctness
17
Initial State s0"
Final State s1"
Given: an execution of parallel program (e.g. of parallel loop iterations)
Initial State s0"
Final State s1"
Is there an equivalent execution of NDSeq spec?
Idea: Serializability?
![Page 24: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/24.jpg)
Conflict-Serializability is Too Strict
18
c = min_cost b = lower_bound(i) if * [true]: if b >= c: // false
cost = compute_cost(i) if cost < min_cost: // false
… min_cost = cost …
Thread 1:
Thread 2: c = min_cost b = lower_bound(i) if * [true]: if b >= c: // false
cost = compute_cost(i) if cost < min_cost: // false
… min_cost = cost …
Classic Theorem: Cycle of conflict edges =>
Not serializable!
![Page 25: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/25.jpg)
Relaxing Conflict-Serializability
19
c = min_cost b = lower_bound(i) if * [true]: if b >= c: // false
cost = compute_cost(i) if cost < min_cost: // false
…
min_cost = cost …
Thread 1:
Thread 2:
Can we set * to false?
Check: Does body have any side effects on execution?
![Page 26: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/26.jpg)
Relaxing Conflict-Serializability
19
c = min_cost b = lower_bound(i) if * [true]: if b >= c: // false
cost = compute_cost(i) if cost < min_cost: // false
… min_cost = cost …
Thread 1:
Thread 2: c = min_cost b = lower_bound(i) if * [false]: if b >= c: // false
cost = compute_cost(i) if cost < min_cost: // false
Can we set * to false?
Check: Does body have any side effects on execution?
![Page 27: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/27.jpg)
Relaxing Conflict-Serializability
20
c = min_cost b = lower_bound(i) if * [false]: if b >= c: // false
cost = compute_cost(i) if cost < min_cost: // false
… min_cost = cost …
Local c is no longer used, so conflicting read of
min_cost is irrelevant. Thread 1:
Thread 2:
Theorem. No relevant conflict cycles => exists equivalent NDSeq run!
![Page 28: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/28.jpg)
Relaxing Conflict-Serializability
21
c = min_cost b = lower_bound(i) if * [false]:
cost = compute_cost(i) if cost < min_cost: // false
… min_cost = cost …
Read different value for min_cost, but overall behavior is the same.
Theorem. No relevant conflict cycles => exists equivalent NDSeq run!
Iteration 1:
Iteration 2:
![Page 29: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/29.jpg)
22
Traditional conflict serializability:
+ flipping * + dynamic data dependence:
Thread 2
Thread 1 (a)
Thread 1 (b)
Thread 2
Thread 1 (a)
Thread 1 (b)
Not serializable! Cycle of conflicts.
Thread 2
Thread 1 (a)
Thread 1 (b)
Thread 2
Thread 1 (a’)
Thread 1 (b)
Thread 2
Thread 1 (a’)
Thread 1 (b)
Flip *
![Page 30: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/30.jpg)
Outline ! Overview
! Motivating Example
! Nondeterministic Sequential (NDSeq) Specifications for Parallel Correctness
! Runtime Checking of NDSeq Specifications
! Experimental Results ! Conclusion
23
![Page 31: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/31.jpg)
Experimental Evaluation
24
! Wrote and tested NDSeq specifications for: ! Java Grande, Parallel Java, Lonestar, DaCapo,
and nonblocking data structure. ! Size: 40 to 300K lines of code. ! Tested 5 parallel executions / benchmark.
! Two claims: 1. Easy to write NDSeq specifications. 2. Our technique serializes significantly more
executions than traditional methods.
![Page 32: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/32.jpg)
25
Benchmark Lines of Code
# of Parallel Constructs # of if(*)
stack 40 1 2 queue 60 1 2 meshrefine 1K 1 2 sunflow 24K 4 4 xalan 302K 1 3 keysearch3 200 2 0 mandelbrot 250 1 0 phylogeny 4.4K 2 3 series 800 1 0 crypt 1.1K 2 0 raytracer 1.9K 1 0 montecarlo 3.6K 1 0
JGF
PJ
DaC
apo
![Page 33: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/33.jpg)
26
Benchmark Size of Trace
Serializability Warnings
stack 1,744 5 (false) 0 queue 846 9 (false) 0 meshrefine 747K 30 (false) 0 sunflow 24,250K 28 (false) 3 (false) xalan 16,540K 6 (false) 2 (false) keysearch3 2,059K 2 (false) 0 mandelbrot 1,707K 1 (false) 0 phylogeny 470K 6 6 series 11K 0 0 crypt 504K 0 0 raytracer 6,170K 1 1 montecarlo 1,897K 2 (false) 0
JGF
PJ
DaC
apo
Traditional Our Technique
![Page 34: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/34.jpg)
27
Benchmark Size of Trace
Serializability Warnings
stack 1,744 5 (false) 0 queue 846 9 (false) 0 meshrefine 747K 30 (false) 0 sunflow 24,250K 28 (false) 3 (false) xalan 16,540K 6 (false) 2 (false) keysearch3 2,059K 2 (false) 0 mandelbrot 1,707K 1 (false) 0 phylogeny 470K 6 6 series 11K 0 0 crypt 504K 0 0 raytracer 6,170K 1 1 montecarlo 1,897K 2 (false) 0
JGF
PJ
DaC
apo
Traditional Our Technique
![Page 35: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/35.jpg)
Limitations
28
! Implementation ! Dynamic data dependence ==> high overhead. ! Instrumentation may miss some reads/writes.
! Commutativity:
increment(x);
…
increment(y); …
… increment(x); … increment(y); …
![Page 36: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/36.jpg)
Outline ! Overview
! Motivating Example
! Nondeterministic Sequential (NDSeq) Specifications for Parallel Correctness
! Runtime Checking of NDSeq Specifications
! Experimental Results
! Conclusion
29
![Page 37: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/37.jpg)
Summary
30
! Separate parallel & functional correctness. ! Lightweight NDSeq specs for parallelism. ! Sequentially verify functional correctness.
! Runtime checking of NDSeq specs. ! Generalize conflict-serializability using if(*) and
dynamic data dependence.
! Future/Current Work: ! Automatically inferring NDSeq specifications. ! Static verification of parallel correctness. ! Debugging on NDSeq.
![Page 38: NDSeq: Runtime Checking for Nondeterministic Sequential Specs …parlab.eecs.berkeley.edu/sites/all/parlab/files/Talk... · 2011. 12. 15. · Idea: Use sequential program as spec](https://reader036.vdocument.in/reader036/viewer/2022071507/612862a78a2e3138c14705ba/html5/thumbnails/38.jpg)
P A R A L L E L C O M P U T I N G L A B O R A T O R Y
EECS Electrical Engineering and
Computer Sciences
Questions?
Many thanks to Intel, Microsoft, other Parlab sponsors, and NSF for supporting this work.