Date |
Topic |
Zoom Link |
Assignments |
Reading/Slides/Videos |
Suggested Readings |
Tue 08/22 |
Course Intro, Concurrency and Correctness
| [lecture] |
|
slides
|
|
Thu 08/24 |
Processes, Threads, Fibers
| [lecture] |
|
Chapter 1 slides
|
Understanding the Linux Kernel (3rd Edition) Chapter 9, Process Address Space (skim)
|
Tue 08/29 |
PThreads, Blocking, Spinning, Conditions
| [lecture] |
|
Chapter 6 (pp. 143-173) slides
|
Experiences with Processes and Monitors in Mesa (Lampson and Redell, Communications of the ACM 23, 2, 1980)
The "Double-Checked Locking is Broken" Declaration (Bacon, Bloch, Bogda, Click, Haahr, Lea, May, Maessen, Mitchell, Nilsen, Pugh, Sirer, 2004)
|
Thu 08/31 |
Barriers, Events
| [lecture] |
Lab 1: Synchronization Basics
|
Chapter 6 (pp. 173-187) slides
|
Synchronization Implementation Details
|
Tue 09/05 |
Lab 1 Discussion
| |
|
Chapter 3, Chapter 4 (pp. 88-100) Lecture slides Discussion slides
|
|
Thu 09/07 |
Parallel Performance
| [lecture] |
|
Chapter 3, Chapter 4 (pp. 88-100) slides
|
|
Tue 09/12 |
Futures, Async
| [lecture] |
|
Futures and Promises dist-prog-book chapter 2 slides
|
|
Thu 09/14 |
Concurrency-Aware Languages--Cilk, Go, Julia, Chapel
| [lecture] |
Lab 2: Prefix Scan and Barriers
|
1) Go Book Chapter Events slides
|
Implementation of Cilk-5 Multithreaded Language
|
Tue 09/19 |
Task Queues, Thread Pools
| [lecture] |
|
Windows APC Windows APC
Java Thread Pools Thread Pools Go slides
|
|
Thu 09/21 |
Transactions and Transactional Memory
| [lecture] |
|
Ordering concurrent events and transactions in Principles of Transaction Processing book
Chapter 10 (pp 291-295)
The Art of Multiprocessor Programming 3-3.6 book-notes slides
|
Transaction Processing: Concepts and Techniques (Jim Gray and Andreas Reuter 1993) 1.1 - 1.2.5 4.2, 4.7 and 4.7.1, 4.9 and 4.9.1 7.1-7.6
The Transaction Concept (Gray, 1981)
Is Transactional Programming Actually Easier?
|
Tue 09/26 |
Concurrency-Aware Languages--OpenMP, Orc
| [lecture] |
|
1) OpenMP Book (pp. 15-40) TM slides Compiler parallelization slides
|
The Orc Programming Language (pp. 1-25)
|
Thu 09/28 |
OpenMP, SIMD, Parallel Architectures
| [lecture] |
|
1) CUDA Progamming Model (pp. 23-58) TM slides Compiler parallelization slides
|
SIMD Architectures
|
Tue 10/03 |
SIMD, Parallel Architectures
| [lecture] |
Lab 3: Go Go Go due
|
1) CUDA Execution Model (pp. 67-100) slides
|
|
Thu 10/05 |
GPUs: scans, reductions
| [lecture] |
|
1) Parallel Prefix Sum (Scan) with CUDA slides 1 slides 2
|
Dandelion: a Compiler and Runtime for Heterogeneous Systems
|
Tue 10/10 |
Exam
| |
|
|
|
Thu 10/12 |
Shared Memory Safety Rust
| [lecture] |
|
slides 1 slides 2
|
|
Tue 10/17 |
Concurrency at Scale--Map-Reduce
| [lecture] |
|
Chapter 7 (pp. 202-229) slides
|
Hadoop Tutorial
|
Thu 10/19 |
Concurrency at Scale--MPI and Map-Reduce
| [lecture] |
|
1) Map Reduce
2) Map Reduce is a Step Backwards
Rust slides
|
MPI: A Message-Passing Interface Standard
|
Tue 10/24 |
Concurrency at Scale--Dryad, Spark, Percolator
| [lecture] |
Lab 4: GPU Kmeans++ due
|
1) Spark
Rust, MPI slides
|
DryadLINQ
Naiad
|
Thu 10/26 |
Concurrency Distribution and Consistency: NoSQL
| [lecture] |
Project Plan DUE
|
1) NoSQL Database Systems: A Survey and Decision Guidance
Dataflow slides
|
Yesquel: scalable SQL storage for Web applications
|
Tue 10/31 |
Concurrent Datastructures, CRDTs
| [lecture] |
|
CAP, Consistency, and CRDTs dist-prog-book chapter 6
Dataflow slides
|
|
Thu 11/02 |
FPGAs: Guest Lecturer Eric Schkufza
| [lecture] |
|
Consistency slides Parameterized Modules The art of writing Test Benches Cascade ASPLOS 2019 Paper Eric's lecture from last year FPGAs for Software Programmers pp.1-21 Verilog In One Day parts I-IV My first program in Verilog lecture video
|
Sharing, Protection, and Compatibility for Reconfigurable Fabric with AMORPHOS Eric's Demo Source demo_1.v Eric's Demo Source demo_2.v Eric's Demo Source demo_3a.v Eric's Demo Source demo_3b.v Eric's Demo Source demo_4.v Eric's Demo Source demo_5.v Eric's Demo Source demo_6.v Chisel: Constructing Hardware in a Scala Embeedded Language LINQits: Big Data on Little Clients
|
Tue 11/07 |
Lock Freedom
| [lecture] |
Lab 5: Two Phase Commit in Rust
|
CAP, Consistency, and CRDTs dist-prog-book chapter 6 Consistency slides
|
|
Thu 11/09 |
Race Detection
| [lecture] |
|
Lock Freedom slides
|
RaceTrack
|
Tue 11/14 |
Advanced Topics
| [lecture] |
Advanced Topics
|
race detection slides
|
|
Thu 11/16 |
Advanced Topics
| [lecture] |
Advanced Topics
|
race detection slides
|
|
Tue 11/21 |
Fall break
| |
|
|
|
Thu 11/23 |
Fall break
| |
|
|
|
Tue 11/28 |
FPGAs: Guest Lecturer Joshua Landgraf
| |
|
Parameterized Modules The art of writing Test Benches Cascade ASPLOS 2019 Paper Eric's lecture from last year FPGAs for Software Programmers pp.1-21 Verilog In One Day parts I-IV My first program in Verilog lecture video
|
Sharing, Protection, and Compatibility for Reconfigurable Fabric with AMORPHOS Eric's Demo Source demo_1.v Eric's Demo Source demo_2.v Eric's Demo Source demo_3a.v Eric's Demo Source demo_3b.v Eric's Demo Source demo_4.v Eric's Demo Source demo_5.v Eric's Demo Source demo_6.v Chisel: Constructing Hardware in a Scala Embeedded Language LINQits: Big Data on Little Clients
|
Thu 11/30 |
Exam 2
| [lecture] |
Exam
|
|
|
Mon 12/04 |
Last Day of the Semester
| |
Optional Lab: FPGAs with Cascade
Optional Lab: MPI
Project DUE
|
|
|