Topics:
Introduction (all talks in this section are taken from the Art of Multiprocessor Programming by Herlihy & Shavit available at the library):
- Introduction to Concurrency: hardware and software, see Appendix A and B of the book.
- "Spin locks and contention in practice", chapter 7 in the book.
- "Monitors and Blocking Synchronization", chapter 8 in the book.
- Properties of concurrent computation: correctness and progress, chapter 3 in the book.
Concurrent Algorithms (several talks in this section (those referenced as "chapter n") are taken from the Art of Multiprocessor Programming by Herlihy & Shavit available at the library):
- Linked Lists: the Role of Locking, chapter 9. Assigned to Erez Petrank. Presentation
- Concurrent Queues and the ABA Problem, chapter 10.
- Wait-free Queues (paper attached below).
- Fast Concurrent Queues for x86 Processors (paper attached below)
- Concurrent Stacks and Elimination, chapter 11.
- Concurrent hashing and natural parallelism, chapter 13.
- Skiplists and Balanced Search, chapter 14.
- "A Skiplist-Based Concurrent Priority Queue with Minimal Memory Contention", (paper).
- Lock-free Trees (papers)
- Futures, Scheduling, and Work Distribution, chapter 16.
- Barriers, chapter 17.
- Lock-Free Snapshots, (paper).
- Lock-Free Snapshots by multiversioning, (paper).
- Concurrent Size, (paper).
- Counting, Sorting, and Distributed Coordination, chapter 12.
- "Flat Combining", (paper).
Memory Management for lock-free Data Structures:
- Hazard pointers (paper). Assigned to Erez Petrank. Presentation
- Optimistic access (paper).
- Hazard Eras - Non-Blocking Memory Reclamation (see paper).
- NBR: neutralization based reclamation (see paper).
- VBR: Version Based Reclamation (see paper).
- The ERA Theorem for memory management (see paper).
Debugging:
- Debugging tools: Microsoft's Chess (paper).
- IBM’s synchronization coverage for testing (see paper).
- A Randomized Scheduler for Bug Finding (see paper).
- Deterministic parallelism (see paper).
- Record-Replay parallel executions (see paper)
Systems Scalability:
- An Analysis of Linux Scalability to Many Cores. (see paper).
Concurrent data structures on GPUs:
- Mega-KV: a case for GPUs to maximize the throughput of in-memory key-value stores. (see paper).
Concurrent data structures on non-volatile memory:
- A persistent lock-free queue for non-volatile memory. (see paper).
- Efficient Lock-Free Durable Sets. (see paper).
- The Inherent Cost of Remembering Consistently. (see paper).
- Mirror: making lock-free data structures persistent. (see paper).
- Dalí: A Periodically Persistent Hash Map. (see paper).
- A Fast, General System for Buffered Persistent Data Structures. (see paper).
