CSE 539S, Spring 2020
Concepts in Multicore Computing

Instructor TA When & Where
Angelina Lee
Hours: Monday 5:20-6:20pm
See Piazza post 122 for link
Kyle Singer
Hours: Tuesday 5:30-6:30pm
See Piazza post 122 for link
Monday / Wednesday
Lecture: 4-5:20pm
See Piazza post 122 for link

Link to Piazza


Course Description

Nowadays, the vast majority of computer systems are built using multicore processor chips. This fundamental shift in hardware design impacts all areas of computer science --- one must write parallel programs in order to unlock the computational power provided by modern hardware. The goal of this course is to study concepts in multicore computing. We will examine the implications of the multicore hardware design, discuss challenges in writing high performance software, and study emerging technologies relevant to developing software for multicore systems. Topics include memory hierarchy, cache coherence protocol, memory models, scheduling, high-level parallel language models, concurrent programming (synchronization and concurrent data structures), algorithms for debugging parallel software, and performance analysis.


Schedule may shift slightly.

Monday Wednesday Notes / Assignments
Jan 13

Intro to multicore computing and course overview
Jan 15

Task parallelism, dag model, work and span

Jan 20

No Class: Martin Luther King Day
Jan 22

Parallel matrix multiplication and its analysis

Assigned: Project 1 (Jan 22)
Jan 27

Parallel merge sort and its analysis
Jan 29

Concurrent programming 101

Feb 03

Concurrent programming 102
Feb 05

Studio: concurrent linked list

Due: Project 1 (Feb 07)
Feb 10

Snoopy cache coherence protocol
Feb 12

Directory-based cache coherence protocol

Assigned: Project 2 (Feb 10)
Assigned: Reading #1, Understanding NUMA
Feb 17

Performance engineering 101
Feb 19

Performance engineering 102

Assigned: Reading #2, Cilk-5
Feb 24

Paper discussion:
Understanding NUMA
Feb 26

No Class: Instructor Out of Town

Due: Project 2 (Feb 28)
Mar 02

Paper discussion:
Cilk-5 Implementation
Mar 04

Runtime data structures and management of full frames

Assigned: Project 3 (Mar 02)
Mar 09

No Class: Happy Spring Break!
Mar 11

No Class: Happy Spring Break!

Mar 16

No Class: Extended Spring Break
Mar 18

No Class: Extended Spring Break

Assigned: Final Project (Mar 18)
Mar 23

Compiler ABI and support for cactus stack
Mar 25

Studio: Working with runtime code

Assigned: Reading #3, Reducer
Mar 30

Paper discussion:
Apr 01

Reducer, cont
and final project proposal breakout

Due: Final project proposal (Mar 30)
Due: Project 3 (Apr 03)
Apr 06

Hardware memory model
Apr 08

Language memory model

Assigned: Reading #4, Scalable sync
Apr 13

Paper discussion:
Scalable sync
Apr 15

Final project presentation

Apr 20

Final project presentation
Apr 22

Final project presentation

Due: Final report (May 03)