Hari Sundar


CS 6230: Parallel and High Performance Computing

Office Hours: Wed 1-3pm MEB 3454

Schedule, Lectures Slides & Readings

Spring 2016 - WEB L120 - MW 3-4:20pm

This course is structured to train students to reason about the design and implementation of efficient parallel programs. The focus areas of the class will be on the modeling, implementation and evaluation of distributed, message-passing interface (MPI) based programs, shared-memory thread-based OpenMP programs, and hybrid (MPI/OpenMP) programs. Almost all examples will be aligned with numerical scientific computing. This course is appropriate for those that want transform serial algorithms into parallel algorithms, want to modify currently existing parallel algorithms, or want to write parallel algorithms from scratch.

I would also recommend students registered for this course to consider registering for CS-7944 : Parallel Algorithms Seminar.

Prerequisites & Expectations

While there are no formal prerequisites, basic understanding of linear algebra, sequential algorithms and data structures is expected. Additionally, reasonable programming skills (preferably C/C++ or Fortran) and familiarity with Linux or Unix is also expected. The assignments/projects will be parallelized using OpenMP and MPI (Message Passing Interface). We will not cover GPU programming, consider CS 6235 instead.

Adherence to the CoE and SoC academic guidelines is expected. Please read the following.

Tangent

We shall be using the Tangent cluster for the assignments and projects. Tangent is managed by CHPC at the U. Tangent has 64 nodes each with 16 cores and 64GB of RAM. Please fill out this form as soon as possible to get access. I would also recommend that everyone install MPI locally on their machines.

Workload

There will be a 4 assignments (plus 2 minor ones), a take-home midterm and a final project. The assignments will be based on materials discussed in class. A tentative grade division is listed below.

 5% - class participation
 5% - assignment #1 (minor)
10% - assignment #2
10% - assignment #3
10% - assignment #4
20% - midterm
 5% - assignment #5 (minor)
10% - assignment #6
25% - final project

The assignments will be a combination of theoretical problems and a programming task. Template code for the programming tasks is available on the course github page. The programming tasks will be automatically graded. You will be awarded 60% marks for correctness of your code and the remaining 40% will be based on performance (runtime and scalability) compared to other students.