Assignments will be posted here during the course of the semester as
they are made available to the class.
Project
- Research Topics in Parallel
Computing
This class entails an individual project (due in Week
13, just before the fall break). The project is part of the writing
requirements of the course.
Labs
Labs serve two purposes. First, it is where you gather some (possibly
preliminary) data, typically by doing some hands-on programming work. This
provides input to the discussion. Second, labs are also the place where
you can get hands-on help with programming assignments.
- Lab 0:Taking Notes.
- Lab 1:Plotting time, speedup, and efficiency.
- Lab 2:Mandelbrot revisited.
- Lab 3:OpenMP Tasks.
- Lab 4:Getting Started on the Cray.
- Lab 5:Getting Started with MPI.
- Lab 6:Introduction to GPU and CUDA.
- Lab 7:Plotting and analyzing data.
- Lab 8:Wavefront Parallelization exercises.
Discussions
All discussions will be conducted in Piazza. Typically, discussions will
follow a lab. All members in a dicussion group will discuss the results
and observations they took in the lab. The entire group will then
collaboratively write up a single group report. The discussion report is
due Saturday noon Mountain time (MST/MDT as the case may be).
- Discussion 0: Form groups, create group names. Discuss how to take notes. Due Fri, Aug 26.
- Discussion 1: Plotting time, speedup and efficiency. Due Sat noon, Sept. 3.
- Discussion 2: OpenMP dynamic scheduling. Due Sat noon, Sept 10.
- Discussion 3: OpenMP OpenMP Tasking. Due Mon 5:00PM, Sept 19.
- Discussion 4: PA1 on Cray. Due Mon 5:00 PM, Oct 03.
- Discussion 5: MPI Basics. Due Mon 5:00 PM, Oct 24.
- Discussion 6: Introduction to GPU and CUDA. Due Mon 5:00 PM, Nov 07.
- Discussion 7: Plotting and analyzing data. Due Mon 5:00 PM, Nov 14.
- Discussion 8: Wavefront Parallelization. Due Mon 5:00 PM, Nov 28.
Programming Assignments
You will do most of your learning through the programming assignments.
there will be six assignments, roughly one every couple of weeks. There
will be no assignments in the week of the midterm and the last week of
class. Programming assignments will follow a two-phase submission policy.
On Sunday midnight, you will submit the working parallel (and possibly
sequential) code. After that, you will gather performance data, analyze
it, write yp your lab report and submit it on Tuesday. Often your analysis
of your performance data may lead you to a better parallelization, so you
may modify the parallel program to improve performance, and your Tuesday
submission may include improved code with your report.
- PA1: Parallel
Optimizations (OpenMP). Due Sun. Sept 11, 11:59PM (phase 1), Tue, Sept
13, 11:59PM (phase 2).
- PA2: Sequential and
OpenMP Prime Sieve. Due Sun. Sept 25, 11:59PM (phase 1), Tue, Sept 27,
11:59PM (phase 2).
- PA3: Knapsack DP in
OpenMP. Due Sun. Oct 16, 11:59PM (phase 1), Tue, Oct 18, 11:59PM (phase
2).
- PA4: Jacobi2D with
MPI. Due Sun. Oct 30, 11:59PM (phase 1), Tue, Nov 1, 11:59PM (phase
2).
- PA5: CUDA first steps.
Due Sun. Nov 13, 11:59PM (phase 1), Tue, Nov 15, 11:59PM (phase
2).
- PA6: Back Propagation
Learning in CUDA. Wed, Dec 7, 11:59PM
Checkin Submission guidelines:
There are two ways to submit either through
website or the
Checkin program (example: ~cs475/bin/checkin PA1.1 PA1.1.tar). It is recommended to use the website method because the Preliminary Testing is available only for it.