SLIDE 1
Non-deterministic parallelism considered useful
Derek G. Murray Steven Hand University of Cambridge
SLIDE 2
- 1. Parallelization
- 2. Synchronization
- 3. Scheduling
- 4. Load balancing
- 5. Communication
- 6. Fault tolerance
- 7. Guaranteed termination
SLIDE 3
- 1. Parallelization
- 2. Synchronization
- 3. Scheduling
- 4. Load balancing
- 5. Communication
- 6. Fault tolerance
- 7. Guaranteed termination
while ¡(x) ¡{ ¡ ¡ ¡ ¡ ¡… ¡ } ¡
SLIDE 4
- 1. Parallelization
- 2. Synchronization
- 3. Scheduling
- 4. Load balancing
- 5. Communication
- 6. Fault tolerance ⇔ Deterministic
- 7. Guaranteed termination
SLIDE 5
Real programmers don’t use deterministic parallelism
SLIDE 6 Real programmers use
- Async. Networks
- Real hardware
- Performance
interference
- User input
- Timeouts
- Signals
- select() loops
- Condition variables
- Mutable state
All of these cause non-determinism!
SLIDE 7
Example: branch-and-bound
L J M K
SLIDE 8
T K M J L
Deterministic data flow
SLIDE 9
Irregular parallelism
K L J M
SLIDE 10
Irregular parallelism
K L J M T
SLIDE 11
T K M
SELECT
J L
Non-deterministic select
SLIDE 12
Non-deterministic select
K L J M T
SLIDE 13
Non-deterministic select
K L J M T
SLIDE 14
K M J L
Asynchronous signals
new bounds work stealing/ shedding
SLIDE 15
Asynchronous signals
K L J M
SLIDE 16
Asynchronous signals
K L J M
SLIDE 17
- 1. Parallelization
- 2. Synchronization
- 3. Scheduling
- 4. Load balancing
- 5. Communication
- 6. Fault tolerance
- 7. Guaranteed termination
SLIDE 18
- 1. Parallelization
- 2. Synchronization
- 3. Scheduling
- 4. Load balancing
- 5. Communication
- 6. Fault tolerance
- 7. Guaranteed termination
SLIDE 19 Challenge: dealing with faults
- Fail everything
- Error codes/exceptions
- Bounded non-determinism
- Checkpoints
- Record and replay
SLIDE 20 Conclusions
- Many benefits of non-determinism
– Performance, adaptability, interactivity
- System must allow non-determinism
- Determinism at language-level
– For programmers who need training wheels