M5: Concurrent Objects (Part 2) and Parallel Design

This fifth module we continue our discussion on concurrent objects by looking at concurrent based implementations of pool-based objects such as, queues, and stacks. We will also begin to look at ways to design parallel programs.

Pre-recorded Lectures

The pre-recorded lectures are available here: M5 Videos. You can also find the videos under the “Panopto” tab on the MPCS 52060 canvas site.

The lectures are a series of approx 5-20 minute videos divided into 5 sections:

  • 5.0.1 - Introduction to Concurrent Pools

  • 5.0.2 - Bounded & Lock-free Queues

  • 5.1 - Lock Free Stack

  • 5.2 - Initial Design Steps and Partitioning

  • 5.3 - Functional Decomposition and Communication Factors

  • 5.4 - Data Dependencies and Load Balancing

  • 5.5 - Granularity and I/O

The slides/code presented in these videos are accessible in the upstream repository under the m5/resources directory. Please reach out to me if you do not have access to this repository.

Resources/Readings

  • The Art of Multiprocessor Programming readings:
    • Ch. 10.1,1.2,10.3,10.5,10.6

    • Ch. 11.1, 11.2

Synchronous Sessions

You will find the links to the Zoom sessions on Canvas. As a reminder here are the dates and times for the zoom session for this module:

  • Dates/Times
    • Section 1: Thursday October 28th @ 4:00pm-5:20pm

  • Discussion Outline
    • Profiling Go programs

    • Q&A on the pre-recorded lectures

    • Concurrent Hash tables (if time permits)

Assignment

Assignments are always due on Thursday evenings.