Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Skip Lists.

Slides:



Advertisements
Similar presentations
CS16: Introduction to Data Structures & Algorithms
Advertisements

David Luebke 1 6/7/2014 CS 332: Algorithms Skip Lists Introduction to Hashing.
Multicore Programming Skip list Tutorial 10 CS Spring 2010.
The State Transition Diagram
Win8 on Intel Programming Course Desktop : Sensors Cédric Andreolli Intel Software
Introduction Companion slides for
Linked Lists: Lazy and Non-Blocking Synchronization Based on the companion slides for The Art of Multiprocessor Programming (Maurice Herlihy & Nir Shavit)
Spin Locks and Contention Based on slides by by Maurice Herlihy & Nir Shavit Tomer Gurevich.
Introduction to Software Engineering 7. Modeling Behaviour.
Binary Search Trees Briana B. Morrison Adapted from Alan Eugenio.
12. Summary, Trends, Research. © O. Nierstrasz PS — Summary, Trends, Research Roadmap  Summary: —Trends in programming paradigms  Research:...
Shared Counters and Parallelism Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
ESE Einführung in Software Engineering N. XXX Prof. O. Nierstrasz Fall Semester 2009.
ESE Einführung in Software Engineering X. CHAPTER Prof. O. Nierstrasz Wintersemester 2005 / 2006.
Metamodeling Seminar X. CHAPTER Prof. O. Nierstrasz Spring Semester 2008.
ESE Einführung in Software Engineering X. CHAPTER Prof. O. Nierstrasz Wintersemester 2005 / 2006.
N. XXX Prof. O. Nierstrasz Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes.
Linked Lists: Locking, Lock- Free, and Beyond … Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
7. Fixed Points. © O. Nierstrasz PS — Fixed Points 7.2 Roadmap  Representing Numbers  Recursion and the Fixed-Point Combinator  The typed lambda calculus.
Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Skip Lists.
OORPT Object-Oriented Reengineering Patterns and Techniques X. CHAPTER Prof. O. Nierstrasz.
CP — Concurrent Programming X. CHAPTER Prof. O. Nierstrasz Wintersemester 2005 / 2006.
12. eToys. © O. Nierstrasz PS — eToys 12.2 Denotational Semantics Overview:  … References:  …
Two-Process Systems TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: A A AA Companion slides for Distributed Computing.
Collecting Images & Clippings Chapter 2.3 in Sketching User Experiences: The Workbook.
Win8 on Intel Programming Course The challenge Paul Guermonprez Intel Software
Chapter 19 - basic definitions - order statistics ( findkth( ) ) - balanced binary search trees - Java implementations Binary Search Trees 1CSCI 3333 Data.
1 Hash Tables  a hash table is an array of size Tsize  has index positions 0.. Tsize-1  two types of hash tables  open hash table  array element type.
Multicore Programming
The Animated Sequence Chapter 5.1 in Sketching User Experiences: The Workbook.
Chapter 19 Implementing Trees and Priority Queues Fundamentals of Java.
State Teleportation How Hardware Transactional Memory can Improve Legacy Data Structures Maurice Herlihy and Eli Wald Brown University.
Linked Lists: Locking, Lock- Free, and Beyond … Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Modified by.
Algorithms and data structures Protected by
Concurrent Linked Lists and Linearizability Proofs Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Modified.
Win8 on Intel Programming Course Paul Guermonprez Intel Software
State of the Ward in 2007 Version 1.0 A Fifth Sunday Lesson Given in the Sterling Park Ward, Ashburn, VA Stake by D. Calvin Andrus, Bishop
Advanced Locking Techniques
Skiplist-based Concurrent Priority Queues Itay Lotan Stanford University Nir Shavit Sun Microsystems Laboratories.
A Simple Optimistic skip-list Algorithm Maurice Herlihy Brown University & Sun Microsystems Laboratories Yossi Lev Brown University & Sun Microsystems.
Design of Everyday Things Part 2: Useful Designs? Lecture /slide deck produced by Saul Greenberg, University of Calgary, Canada Images from:
Concurrent Queues Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Programming Language Basics Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Multiprocessor Architecture Basics Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Concurrent Stacks Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Futures, Scheduling, and Work Distribution Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit TexPoint fonts used.
Priority Queues Dan Dvorin Based on ‘The Art of Multiprocessor Programming’, by Herlihy & Shavit, chapter 15.
Linked Lists: Locking, Lock-Free, and Beyond … Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
SkipLists and Balanced Search The Art Of MultiProcessor Programming Maurice Herlihy & Nir Shavit Chapter 14 Avi Kozokin.
Images of pesticides By: Leslie London, University of Cape Town This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5.
Linked Lists: Locking, Lock- Free, and Beyond … Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Linked Lists: Locking, Lock- Free, and Beyond … Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
The Relative Power of Synchronization Operations Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Skip Lists – Why? BSTs –Worse case insertion, search O(n) –Best case insertion, search O(log n) –Where your run fits in O(n) – O(log n) depends on the.
(c) University of Washington20c-1 CSC 143 Binary Search Trees.
Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Skip Lists.
Skip Lists. Linked Lists Fast modifications given a pointer Slow traversals to random point.
Lecture 9 : Concurrent Data Structures Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Lecture 6-1 : Concurrent Data Structures (Concurrent Linked Lists)
Agenda Video pre-presentations Digital sketches & photo traces
Concurrent Objects Companion slides for
CO890 CONCURRENCY & PARALLELISM
Byzantine-Resilient Colorless Computaton
Elements of Combinatorial Topology
FOTW Worksheet Slides Christopher Penn, Financial Aid Podcast Student Loan Network.
Concurrent Data Structures Concurrent Algorithms 2017
Simulations and Reductions
A Concurrent Lock-Free Priority Queue for Multi-Thread Systems
CSC 143 Binary Search Trees.
B-Trees.
Presentation transcript:

Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Skip Lists

2 Set Object Interface Collection of elements No duplicates Methods –add() a new element –remove() an element –contains() if element is present Art of Multiprocessor Programming

3 Many are Cold but Few are Frozen Typically high % of contains() calls Many fewer add() calls And even fewer remove() calls –90% contains() –9% add() –1% remove() Folklore? –Yes but probably mostly true Art of Multiprocessor Programming

4 Concurrent Sets Balanced Trees? –Red-Black trees, AVL trees, … Problem: no one does this well … … because rebalancing after add() or remove() is a global operation Art of Multiprocessor Programming

5 Skip Lists Probabilistic Data Structure No global rebalancing Logarithmic-time search Art of Multiprocessor Programming

6 Skip List Property Each layer is sub-list of lower levels Art of Multiprocessor Programming

7 Skip List Property Each layer is sub-list of lower-levels Art of Multiprocessor Programming

8 Skip List Property Each layer is sub-list of lower levels Art of Multiprocessor Programming

9 Skip List Property Each layer is sub-list of lower levels Art of Multiprocessor Programming

10 Skip List Property Each layer is sub-list of lower levels Lowest level is entire list Art of Multiprocessor Programming

11 Skip List Property Each layer is sub-list of lower levels Not easy to preserve in concurrent implementations … Art of Multiprocessor Programming

12 Search contains(8) Too far Art of Multiprocessor Programming

13 Search contains(8) OK Art of Multiprocessor Programming

14 Search contains(8) Too far Art of Multiprocessor Programming

15 Search contains(8) Too far Art of Multiprocessor Programming

16 Search contains(8) Yes! Art of Multiprocessor Programming

Search contains(8) Art of Multiprocessor Programming

Logarithmic contains(8) Log N Art of Multiprocessor Programming

19 Why Logarthimic Property: Each pointer at layer i jumps over roughly 2 i nodes Pick node heights randomly so property guaranteed probabilistically 2i2i 2i2i Art of Multiprocessor Programming

20 Sequential Find int find(T x, Node [] preds, Node [] succs) { … } Art of Multiprocessor Programming

21 Sequential Find int find(T x, Node [] preds, Node [] succs) { … } object height (-1 if not there) Art of Multiprocessor Programming

22 Sequential Find int find(T x, Node [] preds, Node [] succs) { … } Object sought object height (-1 if not there) Art of Multiprocessor Programming

23 Sequential Find int find(T x, Node [] preds, Node [] succs) { … } object sought return predecessors Object height (-1 if not there) Art of Multiprocessor Programming

24 Sequential Find int find(T x, Node [] preds, Node [] succs) { … } object sought return predecessors Object height (-1 if not there) Art of Multiprocessor Programming return successors

25 Successful Search find(7, …) preds Art of Multiprocessor Programming

26 Successful Search find(7, …) succs preds Art of Multiprocessor Programming

27 Unsuccessful Search find(6, …) preds Art of Multiprocessor Programming

28 Unsuccessful Search find(6, …) succs preds Art of Multiprocessor Programming

29 Lazy Skip List Mix blocking and non-blocking techniques: –Use optimistic-lazy locking for add() and remove() –Wait-free contains() Remember: typically lots of contains() calls but few add() and remove() Art of Multiprocessor Programming

30 Review: Lazy List Remove aa b c d Art of Multiprocessor Programming

31 Review: Lazy List Remove aa b c d Present in list Art of Multiprocessor Programming

32 Review: Lazy List Remove aa b c d Logically deleted Art of Multiprocessor Programming

33 Review: Lazy List Remove aa b c d Physically deleted Art of Multiprocessor Programming

34 Lazy Skip Lists Use a mark bit for logical deletion Art of Multiprocessor Programming

35 add(6) Create node of (random) height Art of Multiprocessor Programming

36 add(6) find() predecessors Art of Multiprocessor Programming

37 add(6) find() predecessors Lock them Art of Multiprocessor Programming

38 add(6) find() predecessors Lock them Validate Optimistic approach Art of Multiprocessor Programming

39 add(6) find() predecessors Lock them Validate Splice Art of Multiprocessor Programming

40 add(6) find() predecessors Lock them Validate Splice Unlock Art of Multiprocessor Programming

41 remove(6) Art of Multiprocessor Programming

42 remove(6) find() predecessors Art of Multiprocessor Programming

43 remove(6) find() predecessors Lock victim Art of Multiprocessor Programming

remove(6) find() predecessors Lock victim Set mark (if not already set) Logical remove… Art of Multiprocessor Programming

remove(6) find() predecessors Lock victim Set mark (if not already set) Lock predecessors (ascending order) & validate Art of Multiprocessor Programming

46 remove(6) find() predecessors Lock victim Set mark (if not already set) Lock predecessors (ascending order) & validate Physically remove Art of Multiprocessor Programming

47 remove(6) find() predecessors Lock victim Set mark (if not already set) Lock predecessors (ascending order) & validate Physically remove Art of Multiprocessor Programming

48 remove(6) find() predecessors Lock victim Set mark (if not already set) Lock predecessors (ascending order) & validate Physically remove Art of Multiprocessor Programming

49 remove(6) find() predecessors Lock victim Set mark (if not already set) Lock predecessors (ascending order) & validate Physically remove Art of Multiprocessor Programming

50 remove(6) find() predecessors Lock victim Set mark (if not already set) Lock predecessors (ascending order) & validate Physically remove Art of Multiprocessor Programming

51 contains(8) find() & not marked Art of Multiprocessor Programming

52 contains(8) Node 6 removed while traversed Art of Multiprocessor Programming

53 contains(8) Node removed while being traversed Art of Multiprocessor Programming

54 contains(8) Prove: an unmarked node (like 8) remains reachable Art of Multiprocessor Programming

remove(6): Linearization Successful remove happens when bit is set Logical remove… Art of Multiprocessor Programming

56 Add: Linearization Successful add() at point when fully linked Add fullyLinked bit to indicate this Bit tested by contains() Art of Multiprocessor Programming

57 contains(7): Linearization When fully-linked unmarked node found Pause while fullyLinked bit unset Art of Multiprocessor Programming

58 contains(7): Linearization When do we linearize unsuccessful Search? 1 So far OK… Art of Multiprocessor Programming

59 contains(7): Linearization When do we linearize unsuccessful Search? 7 7 But what if a new 7 added concurrently? Art of Multiprocessor Programming

60 contains(7): Linearization When do we linearize unsuccessful Search? Prove: at some point 7 was not in the skip list Art of Multiprocessor Programming

61 A Simple Experiment Each thread runs 1 million iterations, each either: –add() –remove() –contains() Item and method chosen in random from some distribution Art of Multiprocessor Programming

62 Lazy Skip List: Performance Multiprogramming Art of Multiprocessor Programming

63 Lazy Skip List: Performance Multiprogramming Higher contention Art of Multiprocessor Programming

64 Lazy Skip List: Performance Multiprogramming Unrealistic Contention Art of Multiprocessor Programming

65 Summary Lazy Skip List –Optimistic fine-grained Locking Performs as well as the lock-free solution in “common” cases Simple Art of Multiprocessor Programming

66 This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.Creative Commons Attribution-ShareAlike 2.5 License You are free: –to Share — to copy, distribute and transmit the work –to Remix — to adapt the work Under the following conditions: –Attribution. You must attribute the work to “The Art of Multiprocessor Programming” (but not in any way that suggests that the authors endorse you or your use of the work). –Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to – Any of the above conditions can be waived if you get permission from the copyright holder. Nothing in this license impairs or restricts the author's moral rights. Art of Multiprocessor Programming