it ain’t the meat, it’s the notion why theory is essential to teaching concurrent programming...

Post on 19-Dec-2015

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

It Ain’t the Meat, it’s the Notion

Why Theory is Essential to Teaching

Concurrent Programming

Maurice HerlihyBrown University

Multicore Programming Education

2

In many areas of CS

• Systems research fought all the hard battles– FORTRAN complexity theory– UDP/IP network algorithms

• Theory researchers arrived later to shoot the wounded

• But concurrency is different

Multicore Programming Education

3

Vive la Différence

• Concurrent programmers are made, not born (mostly)

• Students have little experience with concurrency (today)

• Develop intuition by– Idealized examples first– Logical reasoning

Multicore Programming Education

4

Homework Challenge

Devise Wait-Free 1-Enqueuer, 1-Dequeuer Buffer using only reads

& writes

Multicore Programming Education

5

Another Homework Challenge

How about two dequeuers?

Multicore Programming Education

66

Shared Memory

Atomic reads and writes to individual variables

read

write

Multicore Programming Education

77

Snapshot Challenge

Wait-Free algorithm to read multiple

variables atomically?

Read both

Read both

Multicore Programming Education

88

Snapshot Challenge

Wait-Free algorithm to

write multiple variables

atomically?writeboth

write both

Multicore Programming Education

99

Bakery Algorithmclass Bakery implements Lock { boolean[] flag; Label[] label; public Bakery (int n) { flag = new boolean[n]; label = new Label[n]; for (int i = 0; i < n; i++) { flag[i] = false; label[i] = 0; } } …

n-10

f f f f t ft

2

f

0 0 0 0 5 04 0

6

Critical Section

Classic, first-come-first served mutual

exclusion algorithm

Multicore Programming Education

10

Is Locked?isLocked(

)

Bakery Lock

True means was locked at some instant, false means was free at some instant.

Multicore Programming Education

11

tryLock()

Bakery Lock

Acquire lock if free & return true, otherwise

immediately return false.

I Can Has Lock?

Multicore Programming Education

12

Our Experience Teaching Concurrency

• Brown (10 years)• Tel-Aviv (10 years)• Industry

Multicore Programming Education

13

Mutual Exclusion

• Peterson, Bakery, space lower bounds

• Teaches– Deadlock– Livelock– Fairness, first-come-first-served, …

Multicore Programming Education

14

Linearizability

• How to describe a concurrent object?– By “equivalence” to sequential

• What is a concurrent API?• How do we reason about correctness?

– Even informally!

• Learn the rules before you break them

Multicore Programming Education

15

Consensus Numbers

• Certain synchronization primitives are mathematically stronger than others

• No, you can’t build lock-free X from Y– So do not waste your time trying

• Yes, you can build lock-free X from Z– The rest is optimization

Multicore Programming Education

16

Uh, Oh, Spin Locks

• Inexplicable in idealized model

• Well, kids …– We didn’t actually

lie to you– But the architects

gave us caches– And you have to

outwit them …

bad

less bad

Test&set

Test&test&set

Multicore Programming Education

17

Then What?

• Implement simple T&S lock– Dreadful performance

• Implement T&T&S lock– Improved performance

Multicore Programming Education

18

Homework Challenge

Devise Wait-Free 1-Enqueuer, 1-Dequeuer Buffer using only reads

& writes

Multicore Programming Education

19

Yes,

you ca

n

Homework Challenge

Multicore Programming Education

20

Another Homework Challenge

How about two dequeuers?

Multicore Programming Education

21

Maybe?

“hence [any wait-free object] can be written without a CAS/LL/SC. Instead LL/SC is used to make it more efficient but LL/SC

isn't *required* to make it wait-free.”

Found in a blog

Multicore Programming Education

22

Alas, no, you can’t

Another Homework Challenge

Multicore Programming Education

23

What If we have Test&Set?

Multicore Programming Education

24

What If we have Test&Set?

No, you still can’t

Multicore Programming Education

25

What If we have Compare&Swap?

Multicore Programming Education

26

What if We Have Compare&Sswap?

Yes,

you ca

n

Multicore Programming Education

2727

Snapshot Challenge

Reads from 0 and

1

Reads from 1 and

2

Wait-Free algorithm to read multiple

variables atomically?

Multicore Programming Education

2828

Snapshot Challenge

Reads from 0 and

1

Reads from 1 and

2

Yes,

you ca

n

Wait-Free algorithm to read multiple

variables atomically?

Multicore Programming Education

2929

Multiple Assignment Challenge

Writes to 0 and 1

Writes to 1 and 2

Wait-Free algorithm to

write multiple variables

atomically?

Multicore Programming Education

3030

Writes to 0 and 1

Writes to 1 and 2

Wait-Free algorithm to

write multiple variables

atomically?

Multiple Assignment Challenge

No, you can’t

Multicore Programming Education

31

Is Locked?isLocked(

)

Bakery Lock

True means was locked at some instant, false means was free at some instant.

Multicore Programming Education

32

isLocked()

Bakery Lock

True means was locked at some instant, false means was free at some instant.

Yes,

you ca

n

Is Locked?

Multicore Programming Education

33

I Can Has Lock?

tryLock()

Bakery Lock

Acquire lock if free & return true, otherwise

immediately return false.

Multicore Programming Education

34

tryLock()

Bakery Lock

Acquire lock if free & return true, otherwise

immediately return false.

I Can Has Lock?

No, you can’t

Multicore Programming Education

35

My Very Last Slide

• Teaching theory first– Develops intuition– Imposes order on chaos

• Idealized problems– Prepare for realistic, complicated

ones

• Impossibility results– Save time and effort

top related