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

piazza.com/wustl/spring2018/cse539s/home


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.


Calendar

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

Assigned:
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

Due:
Project 1
Feb 12

Feb 13

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

Support for cactus stack
Feb 16

Assigned:
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

Due:
Project 2
Mar 08

Performance study 101
Mar 09

Assigned:
Project 3
Mar 12

Assigned:
Reading #1
Mar 13

No Class: Happy Spring Break!
Mar 14
Mar 15

No Class: Happy Spring Break!
Mar 16

Mar 19
Mar 20

Paper discussion: Performance engineering case study
Mar 21

Assigned: Final project
Mar 22

Hardware memory consistency model
Mar 23

Due:
Project 3
Mar 26
Mar 27

Language memory model
Mar 28
Mar 29

Implementation of locks
Mar 30

Due:
Final project proposal
Apr 02
Apr 03

Group work in class
(instructor out of town)
Apr 04
Apr 05

In-class exam
(instructor out of town)
Apr 06

Assigned: Reading #2
Apr 09
Apr 10

Lock-free synchronization
Apr 11
Apr 12

Paper discussion:
The Tapir compiler
Apr 13

Assigned: Reading #3 Reading #4
Apr 16
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