CSE 539S, Spring 2018
Concepts in Multicore Computing

Instructor When & Where
Angelina Lee
Office hours: Tuesday 5:30-6:30pm, Jolley 516
Tuesday / Thursday,
4-5:30pm Cupple II 230

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.

MondayTuesday WednesdayThursday Friday
Jan 15
Jan 16

Intro to multicore computing and course overview
Jan 17
Jan 18

Task parallelism, dag model, work and span
Jan 19
Jan 22
Jan 23

Parallel matrix multiplication and its analysis
Jan 24
Jan 25

Parallel merge sort and dynamic programming
Jan 26

Project 1
Jan 29
Jan 30

Concurrent programming 101
Jan 31
Feb 01

Building a lock-based data structure (in-class lab)
Feb 02
Feb 05
Feb 06

Cilk's work-stealing scheduler
Feb 07
Feb 08

Compilation of Cilk Plus
Feb 09

Project 1
Feb 12

Feb 13

Management of Full Frames and work-first principle
Feb 14
Feb 15

Support for cactus stack
Feb 16

Project 2 (Sunday)
Feb 19
Feb 20

Snoopy cache coherence protocol
Feb 21
Feb 22

Working with runtime code (in-class lab)
Feb 23
Feb 26
Feb 27

Group work in class
(instructor out of town)
Feb 28

Mar 01

Group work in class
(instructor out of town)
Mar 02

Mar 05

Mar 06

Directory-based cache coherence protocol
Mar 07

Mar 08

Performance study 101
Mar 09

Project 2
Mar 12

Reading #1
Mar 13

No Class: Happy Spring Break!
Mar 14

Project 3
Mar 15

No Class: Happy Spring Break!
Mar 16

Mar 19
Mar 20

Performance study 101
Mar 21

Mar 22

Paper discussion: Performance engineering case study
Mar 23

Mar 26
Mar 27

Performance engineering case study (cont) and Hardware memory model
Mar 28

Project 3 Assigned:
Final project
Mar 29

Hardware memory model and Language memory model
Mar 30

Apr 02
Apr 03

Final project proposal
Exam review and Language memory model
Apr 04
Apr 05

In-class exam
Apr 06

Apr 09

Apr 10

Lock-free synchronization
Apr 11
Apr 12

Class cancelled; group work in class
Apr 13

Apr 16

Assigned: Reading #2 Reading #3
Apr 17

Group work in class
(instructor out of town)
Apr 18
Apr 19

Paper discussion:
Storage allocator for multithreaded code
Apr 20
Apr 23
Apr 24

Final project presentation
Apr 25
Apr 26

Final project presentation
Apr 27