Parallel Data Structures

Slides:



Advertisements
Similar presentations
CM20145 Concurrency Control
Advertisements

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Transaction Management Overview Chapter 16.
What is Concurrent Process (CP)? Multiple users access databases and use computer systems Multiple users access databases and use computer systems simultaneously.
Transaction Program unit that accesses the database
Database Systems (資料庫系統)
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Transaction Management Overview Chapter 16.
1 Concurrency Control Chapter Conflict Serializable Schedules  Two actions are in conflict if  they operate on the same DB item,  they belong.
Transaction Management: Concurrency Control CS634 Class 17, Apr 7, 2014 Slides based on “Database Management Systems” 3 rd ed, Ramakrishnan and Gehrke.
TRANSACTION PROCESSING SYSTEM ROHIT KHOKHER. TRANSACTION RECOVERY TRANSACTION RECOVERY TRANSACTION STATES SERIALIZABILITY CONFLICT SERIALIZABILITY VIEW.
Concurrency Control II
Concurrency Control Amol Deshpande CMSC424. Approach, Assumptions etc.. Approach  Guarantee conflict-serializability by allowing certain types of concurrency.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Concurrency Control Chapter 17 Sections
Lock-Based Concurrency Control
Chapter 6 Process Synchronization: Part 2. Problems with Semaphores Correct use of semaphore operations may not be easy: –Suppose semaphore variable called.
Quick Review of Apr 29 material
CMPT Dr. Alexandra Fedorova Lecture X: Transactions.
Distributed Systems 2006 Styles of Client/Server Computing.
©Silberschatz, Korth and Sudarshan16.1Database System Concepts 3 rd Edition Chapter 16: Concurrency Control Lock-Based Protocols Timestamp-Based Protocols.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 10 Transaction Management and Concurrency Control.
Transaction Processing: Concurrency and Serializability 10/4/05.
Academic Year 2014 Spring Academic Year 2014 Spring.
CIS 720 Concurrency Control. Locking Atomic statement –Can be used to perform two or more updates atomically Th1: …. ;……. Th2:…………. ;…….
1 Transaction Management Overview Chapter Transactions  Concurrent execution of user programs is essential for good DBMS performance.  Because.
Linearizability By Mila Oren 1. Outline  Sequential and concurrent specifications.  Define linearizability (intuition and formal model).  Composability.
Cosc 4740 Chapter 6, Part 3 Process Synchronization.
CS4231 Parallel and Distributed Algorithms AY 2006/2007 Semester 2 Lecture 3 (26/01/2006) Instructor: Haifeng YU.
Chapter 11 Concurrency Control. Lock-Based Protocols  A lock is a mechanism to control concurrent access to a data item  Data items can be locked in.
A Consistency Framework for Iteration Operations in Concurrent Data Structures Yiannis Nikolakopoulos A. Gidenstam M. Papatriantafilou P. Tsigas Distributed.
7c.1 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java Module 7c: Atomicity Atomic Transactions Log-based Recovery Checkpoints Concurrent.
1 Concurrency Control Lecture 22 Ramakrishnan - Chapter 19.
Transaction Management Overview. Transactions Concurrent execution of user programs is essential for good DBMS performance. – Because disk accesses are.
1 Concurrency control lock-base protocols timestamp-based protocols validation-based protocols Ioan Despi.
Timestamp-based Concurrency Control
1 Lecture 4: Transaction Serialization and Concurrency Control Advanced Databases CG096 Nick Rossiter [Emma-Jane Phillips-Tait]
Switch off your Mobiles Phones or Change Profile to Silent Mode.
Parallel Data Structures. Story so far Wirth’s motto –Algorithm + Data structure = Program So far, we have studied –parallelism in regular and irregular.
CS 440 Database Management Systems
Database recovery techniques
Transaction Management
Concurrency Control Techniques
Concurrent Objects Companion slides for
Transaction Management and Concurrency Control
Transaction Management Overview
Concurrent Objects Companion slides for
Concurrency Control.
Multiple Granularity Granularity is the size of data item  allowed to lock. Multiple Granularity is the hierarchically breaking up the database into portions.
Advanced Operating Systems - Fall 2009 Lecture 8 – Wednesday February 4, 2009 Dan C. Marinescu Office: HEC 439 B. Office hours: M,
Transaction Management
Transaction Management Overview
CIS 720 Concurrency Control.
Transaction Management
Transaction Management Overview
Chapter 10 Transaction Management and Concurrency Control
CS162 Operating Systems and Systems Programming Review (II)
Chapter 15 : Concurrency Control
Multicore programming
Software Transactional Memory Should Not be Obstruction-Free
Kernel Synchronization II
Transaction Management
Database Management systems Subject Code: 10CS54 Prepared By:
Temple University – CIS Dept. CIS661 – Principles of Data Management
Transaction Management Overview
CONCURRENCY Concurrency is the tendency for different tasks to happen at the same time in a system ( mostly interacting with each other ) .   Parallel.
CSE 542: Operating Systems
Database Systems (資料庫系統)
Database Systems (資料庫系統)
CSE 542: Operating Systems
Transaction Management Overview
Transactions, Properties of Transactions
Presentation transcript:

Parallel Data Structures

Story so far Wirth’s motto So far, we have studied Algorithm + Data structure = Program So far, we have studied parallelism in regular and irregular algorithms scheduling techniques for exploiting parallelism on multicores Now let us study parallel data structures Algorithm (Galois program written by Joe) Galois library API Data structure (library written by Stephanie) Galois programming model

Parallel data structure Class for implementing abstract data type (ADT) used in Joe programs (eg) Graph, map, collection, accumulator Need to support concurrent API calls from Joe program (eg) several concurrently executing iterations of Galois iterator may make calls to methods of ADT Three concerns must work smoothly with semantics of Galois iterators overhead for supporting desired level of concurrency should be small code should be easy to write and maintain

Working smoothly with Galois iterators Consider two concurrent iterations of an unordered Galois iterators orange iteration green iteration Iterations may make overlapping invocations to methods of an object Semantics of Galois iterators: output of program must be same as if the iterations were performed in some sequential order (serializability) first orange, then green or vice versa

Pictorially Must be equivalent to Object: queue Methods: enq(x),deq()/y, enq(x) deq()/? Iteration1 Iteration2 enq(y) deq()/? enq(z) time Thread1 starts executing Stephanie code for m1 Thread1 completes Stephanie code and resumes Joe code Must be equivalent to enq(x) deq()/x Iteration1 Iteration2 enq(y) deq()/y enq(z) OR enq(x) deq()/z Iteration1 Iteration2 enq(y) deq()/y enq(z)

Two concerns Compare with strict serializability in databases Object: o Methods: m1,m2,m3,m4,m5 o.m1() o.m3() Iteration1 Iteration2 o.m2() o.m5() o.m4() time [Consistency] Method invocations that overlap in time must not interfere with each other (eg) o.m1() and o.m2() [Commutativity] Commutativity of method invocations (eg) o.m3() must commute either with o.m4() (to obtain green before orange order) or with o.2() and o.m5() (to obtain orange before green order) Compare with strict serializability in databases (Where transactions should appear to execute sequentially)

Some simple mechanisms Iteration1 Iteration2 Conservative locking deadlock-free hard to know what to lock upfront: (eg) DMR How does this address serializability? lock(o1, o2, …) o1.m() o2.m() … unlock(o1, o2, …) lock(o1, o2, …) o2.m() o1.m() … unlock(o1, o2, …) Iteration1 Iteration2 Two-phase locking incremental requires rollback old idea: Eswaran and Gray (1976) we will call it catch-and-keep lock(o1) o1.m() lock(o2) o2.m() … unlock(o1, o2, …) lock(o2) o2.m() lock(o1) o1.m() … unlock(o1, o2, …)

Problem: potential for deadlock Problem: what if thread t1 needs to acquire a lock on an object o, but that lock is already held by another thread t2? if t1 just waits for t2 to release the lock, we may get deadlock Solution: If a thread tries to acquire a lock that is held by another thread, it reports the problem to the runtime system. Runtime system will rollback one of the threads, permitting the other to continue. To permit rollback, runtime system must keep a log of all modifications to objects made by a thread, so that the thread can be rolled back if necessary log is a list of <object-name, field, old value> tuples

Discussion Stephanie’s job write sequential data structure class add a lock to each class instrument methods to log values before overwriting instrument methods to proceed only after relevant lock is acquired object-based approach Holding locks until the end of the iteration prevents cascading roll-backs compare with Timewarp implementation

Performance problem Iterations can execute in parallel only if they access disjoint sets of objects locking policy is catch-and-keep In our applications, some objects are accessed by all iterations (eg) workset, graph With this implementation, lock on workset will be held by some iteration for entire execution of iteration other threads will not be able to get work lock on graph object will be held by some iteration even if other threads got work, they cannot access graph

Catch-and-release objects Use lock to ensure consistency but release lock on object after method invocation is complete Check commutativity explicitly in gate-keeper object Maintains serializability Need inverse method to undo the effect of method invocation in case of rollback

Gatekeeping Abort! T1 m1 Base Object m2 m2 T2 m3 m3 Log

Gatekeeping Gatekeeper ensures that outstanding operations commute with each other Operation (transaction) = sequence of method invocations by single thread Catch-and-keep is a simple gatekeeper And so is transactional memory, also similar ideas in databases But for max concurrency, we want to allow as many “semantically” commuting invocations as possible

KD-Trees Spatial data-structure Typically implemented as a tree nearest(point) : point add(point) : boolean remove(point) : boolean Typically implemented as a tree But finding nearest is a little more complicated Would like nearest and add to be concurrent if possible When? Why?

Commutativity Conditions

Gatekeeping Solution: keep log of nearest invocations and make sure that no add invalidates them More general solution is to log all invocations and evaluate commutativity conditions wrt outstanding invocations Tricky when conditions depend on state of data structure Forward and general gatekeeping approaches Other issues: Gatekeeper itself should be concurrent Inverse method should have same commutativity as forward method

Gatekeeping in Galois Most commutativity conditions are simple Equalities and disequalities of parameters and return values Simple implementation Instrument data structure Acquire locks on objects in different modes Abstract locking approach How is the different than the object-based approach?

Partition-based locking If topology is graph or grid, we can partition the data structure and associate locks with partitions How do we ensure consistency? How do we ensure commutativity?

Linearizability: Intuitively for the single lock queue 19 q.deq(x) lock() unlock() enq deq deq q.enq(x) enq On an intuitive level, since we use mutual exclusion locks, then each of the actual updates happens in a non-overlapping interval so the behavior as a whole looks sequential. This fits our intuition, and the question is if we can generalize this intuition. Stress the fact that we understand the concurrent execution because we have a way of mapping it to the sequential one, in which we know how a FIFO queue behaves. time Art of Multiprocessor Programming by Maurice Herlihy 19

Other Correctness Conditions Sequential Consistency Linearizability enq(x) T1 T2 T1 enq(x) T1 ok() T2 enq(y) T2 ok() T2 deq() T2 ok(y) enq(y) deq()/x Concurrent operations happen in some sequential order Partial order on non-overlapping operations Memory

Partitioning arrays

Standard array partitions Standard partitions supported in Scalapack (dense numerical linear algebra library), High-performance FORTRAN (HPF), etc. block cyclic block-cyclic Block-cyclic subsumes the other two

Block

Cyclic partitioning

Common use of block-cyclic

Distributions for 2D arrays

Distributing both dimensions