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.
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
- PA2: OpenMP Scans:
prefix sums, products and other ops.
- PA3: Sieve of
- PA4: CUDA first steps.
- PA5: CUDA
- PA6: Jacobi MPI:
computation vs communication.
These count for 5% 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.
- Lab 1: OpenMP, Mandelbrot: Measuring/Analyzing/Reporting Performance.
- Lab 2: OpenMP Tasks.
- Lab 3: Performance Evaluation, Plotting.
- Lab 4: Locality
- Lab 5: Introduction to GPU and CUDA: coalescing.
- Lab 6: Iso-efficiency.
- Lab 7: Getting Started with MPI.
- Lab 8: Wavefront Parallelization
- Details provided in Canvas.