Class Lectures and Reading Assignments
CS 59000-009
Parallel Programming
Fall, 2017

This page documents what we do in class. It contains programs that we will discuss in class, reading assignments, simple homework exercises that you can work on for practice and exam preparation (not for credit), and links to other sources of information.

Here are solutions to the exam problems.

Here is the exam. This is due Friday, December 15.

In the next day or two, I will put a take home final exam up on this page that will be due next week. Please check back here.

We will look examples of "false sharing".

Read Sections 3 and 4 (pages 14-30 and 36-43) on Java concurrency from the following.

We will look at the fork-join examples from the following zip file.

No class: Thanksgiving break.

See the homework assignment page for your second assignment.

I updated the Java threads folder again to include the examples that we used in class today.

I updated the Java threads folder to include the examples that we wrote in class today.

Some printf() experiments.

See the homework assignment page for your first assignment.

Here are a couple of examples of very simple synchronization problems.

Read Sections 2, 6 and 7 (pages 5-14 and 44-60) on Java concurrency from the following.

Here is a folder with introductions to Java threads.

Read Chapters 1, 2, Sections 3.1 - 3.6, and Sections 4.1 - 4.2 from The Little Book of Semaphores.

I figured out what was wrong in the folder of code we were working with. The pthread dll was missing.

Read the next chapter.

Read the following chapters on condition variables and semaphores.

Here are some examples using condition variables.

This zip file contains an implementation of the "producer/consumer" problem using semaphores.

Read the following chapter on "concurrent data structures".

After reading the above chapter, read the following paper.

Labor day. No class.

Read the Sections 28.1 - 28.5 from the following chapter on locks.

Here are some more example thread programs.

We will begin the course by using the "middle piece", Concurrency (in blue), of the folowing operating systems textbook.

Read the following two chapters from this textbook.

Here are example thread programs and a version of gcc that should build these examples.

Important You should get an account on a Purdue Linux cluster. We will use it as an example Linux system. Log into Purdue's "research account management tool" using your Purdue career account. When you are asked for a "research group name", use "Purdue Northwest". Under "Select which queues and resources to request access to", check "Rice". In the textbox for comments, put "CS 59000-009 Professor Roger Kraft". Then click the "Submit Request" button, and we will see what happens.