MCS 572 - Introduction to Supercomputing

The course will be meeting at 2–3:30pm WF in 321 Taft Hall (Call no. 26362)

Textbook: "Parallel Programming" by Barry Wilkinson and Michael Allen, 2nd edition, Pearson Prentice Hall.

Resourses on Message Passing Interface (MPI):
ANL MPI page
A User's Guide to MPI by Peter Pacheco
A collection of MPI tutorials from the ANL MPI page

Resources on GPU programming:
CUDA Programming Guide

Resources on C programming:
GNU C library manual

Tentative syllabus:
Week and dates Sections
Week 1, Jan 16, 18 1.1 – 1.3
Week 2, Jan 23, 25 2.1 – 2.3
Week 3, Jan 30, Feb 1 3.1 – 3.2
Week 4, Feb 6, 8 4.1 – 4.2
Week 5, Feb 13, 15 5.1 – 5.3
Week 6, Feb 20, 22 6.1 – 6.3
Week 7, Feb 27, 29 Review and Midterm
Week 8, Mar 5, 7 7.1 – 7.4
Week 9, Mar 12, 14 8.1 – 8.3
Week 10, Mar 19, 21 8.4 – 8.6
Spring break
Week 11, Apr 2, 4 9.1, 9.4
Week 12, Apr 9, 11 10.2, 11.1 – 11.3
Week 13, Apr 16, 18 12.1 – 12.7, 13
Week 14, Apr 23, 25 Project presentations
Week 15, Apr 30, May 2 Project presentations

Homework:
Week 1, due Wednesday January 30
Week 2, due Wednesday February 6
Week 3, due Wednesday February 13
Week 4, due Wednesday February 20

Sample MPI program:
mpihello, includes instructions for using the ARGO cluster.

Sample Pthread program
add_numbers.c – a multithreaded program which adds numbers from an array.
Illustrates the use of a mutex, a condition variable and a barrier.

Project 1: The Mandelbrot set
Project description
mandelbrot.c (compile with -lm to link with math library)
Due Wednesday March 5.

Exams:
Midterm exam. Due Friday March 7.
heat.c — a serial program to solve heat distribution problem.

Projects: during the course, each student will complete two projects. The first project will be the implementation of a parallel program computing the Mandelbrot set, due somewhere in the middle of the semester. The second project will be an individual project, with the topic chosen by the student individually. As you can observe in the syllabus, two weeks at the end of the course are dedicated to project presentations. Currently, there are two types of projects I can envision:

The UIC supercomputer ARGO will be used to run computational projects. Each student has to have an account on ARGO. Also, I plan to use Icarus to show a few examples of pthread programming, however there is plenty of dual-core machines around.

I will be continuously updating this webpage as the course progresses. For more information, please look at Jan Verschelde's MCS 572 webpage