You will be evaluated on three kinds of "assignments," as described
below. They will be posted here during the course of the semester as they
are made available to the class.
Programming Assignments
These assignments count for 30% of your grade. You will do most of your
learning through the programming assignments. There are 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.
- PA1: Parallelization in
OpenMP. Due Tuesday, September 10@11:59 PM
- PA2: OpenMP Scans:
prefix sums, products and other ops. Due Thu, October 3@11.59 PM
- PA3: Sieve of
Eratosthenes. Due [extended to] Saturday Oct 19@11.59 PM.
- PA4: CUDA first steps.
Due Tuesday, October 29@11:59PM
- PA5: CUDA
MMScan. Due Nov 16@11:59 pm
- PA6: Jacobi MPI:
computation vs communication. Due Saturday, Nov 23@11:59 pm
Labs/Discussions
These count for 10% of your grade, and requre about 2-3 hours of work.
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. There are about 8
Lab/discussions.
- Lab 1:
OpenMP, Mandelbrot: Measuring/Analyzing/Reporting Performance.
- Lab 3:
OpenMP Tasks.
- Lab 4:
Performance Evaluation, Plotting
- Lab 6:
Revisiting the card game.
- Lab 7:
Introduction to GPU and CUDA: coalescing.
- Lab 8:
Iso-efficiency.
- Lab 9:
Getting Started with MPI.
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 and publish it on Piazza.
Project
- Details to be provided later.