` CS 475 Assignments

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.