Presentation is loading. Please wait.

Presentation is loading. Please wait.

It Ain’t the Meat, it’s the Notion Why Theory is Essential to Teaching Concurrent Programming Maurice Herlihy Brown University.

Similar presentations


Presentation on theme: "It Ain’t the Meat, it’s the Notion Why Theory is Essential to Teaching Concurrent Programming Maurice Herlihy Brown University."— Presentation transcript:

1 It Ain’t the Meat, it’s the Notion Why Theory is Essential to Teaching Concurrent Programming Maurice Herlihy Brown University

2 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

3 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

4 Multicore Programming Education 4 Homework Challenge Devise Wait-Free 1- Enqueuer, 1-Dequeuer Buffer using only reads & writes

5 Multicore Programming Education 5 Another Homework Challenge How about two dequeuers?

6 Multicore Programming Education 66 Shared Memory Atomic reads and writes to individual variables read write

7 Multicore Programming Education 77 Snapshot Challenge Wait-Free algorithm to read multiple variables atomically? Read both

8 Multicore Programming Education 88 Snapshot Challenge Wait-Free algorithm to write multiple variables atomically? write both

9 Multicore Programming Education 99 Bakery Algorithm class 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 -1 0 fffftft 2 f 0000504 0 6 Critical Section Classic, first-come- first served mutual exclusion algorithm

10 Multicore Programming Education 10 Is Locked? isLocked( ) Bakery Lock True means was locked at some instant, false means was free at some instant.

11 Multicore Programming Education 11 tryLock() Bakery Lock Acquire lock if free & return true, otherwise immediately return false. I Can Has Lock?

12 Multicore Programming Education 12 Our Experience Teaching Concurrency Brown (10 years) Tel-Aviv (10 years) Industry

13 Multicore Programming Education 13 Mutual Exclusion Peterson, Bakery, space lower bounds Teaches –Deadlock –Livelock –Fairness, first-come-first-served, …

14 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

15 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

16 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

17 Multicore Programming Education 17 Then What? Implement simple T&S lock –Dreadful performance Implement T&T&S lock –Improved performance

18 Multicore Programming Education 18 Homework Challenge Devise Wait-Free 1- Enqueuer, 1-Dequeuer Buffer using only reads & writes

19 Multicore Programming Education 19 Yes, you can Homework Challenge

20 Multicore Programming Education 20 Another Homework Challenge How about two dequeuers?

21 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

22 Multicore Programming Education 22 Alas, no, you can’t Another Homework Challenge

23 Multicore Programming Education 23 What If we have Test&Set?

24 Multicore Programming Education 24 What If we have Test&Set? No, you still can’t

25 Multicore Programming Education 25 What If we have Compare&Swap?

26 Multicore Programming Education 26 What if We Have Compare&Sswap? Yes, you can

27 Multicore Programming Education 27 Snapshot Challenge Reads from 0 and 1 Reads from 1 and 2 Wait-Free algorithm to read multiple variables atomically?

28 Multicore Programming Education 28 Snapshot Challenge Reads from 0 and 1 Reads from 1 and 2 Yes, you can Wait-Free algorithm to read multiple variables atomically?

29 Multicore Programming Education 29 Multiple Assignment Challenge Writes to 0 and 1 Writes to 1 and 2 Wait-Free algorithm to write multiple variables atomically?

30 Multicore Programming Education 30 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

31 Multicore Programming Education 31 Is Locked? isLocked( ) Bakery Lock True means was locked at some instant, false means was free at some instant.

32 Multicore Programming Education 32 isLocked( ) Bakery Lock True means was locked at some instant, false means was free at some instant. Yes, you can Is Locked?

33 Multicore Programming Education 33 I Can Has Lock? tryLock() Bakery Lock Acquire lock if free & return true, otherwise immediately return false.

34 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

35 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


Download ppt "It Ain’t the Meat, it’s the Notion Why Theory is Essential to Teaching Concurrent Programming Maurice Herlihy Brown University."

Similar presentations


Ads by Google