MCS 572: Introduction to Supercomputing
33025 MWF 12:00--12:50 in 219 Taft Hall
The goal of the course is to study parallel algorithms and
their implementation on distributed and shared memory computers,
using message passing, OpenMP, and threads.
In the second half of the course we will consider general purpose
graphics processing units. Prerequisites are a working knowledge
of C (or willingness to acquire programming skills) and a familiary
with algorithms at the level of introductory numerical analysis.
The evaluation of the course consists mainly of homework and
computer projects. Exams are scheduled as preparation for the
computational science prelim.
The recommended textbooks are
- "Parallel Programming. Techniques
and Applications Using Networked Workstations and Parallel
Computers"
by Barry Wilkinson and Michael Allen, Pearson Prentice Hall,
second edition, 2005.
- "Programming Massively Parallel Processors.
A Hands-on Approach"
by David B. Kirk and Wen-mei W. Hwu,
Morgan Kaufmann Publishers, 2010.
Slides for the lectures will be posted below:
- L-1 01/09/12: welcome to mcs 572
- L-2 01/11/12: scalability and classifications
- L-3 01/13/12: high level parallel processing
with Maple worksheets
enablecuda.mw,
enablecuda.mw,
and Python scripts
simpson4pi.py,
simpson4pi1.py, and
simpson4pi2.py.
- L-4 01/18/12: basics of MPI
with simple C programs
mpi_hello_world.c,
broadcast_integer.c, and
broadcast_doubles.c.
- L-5 01/20/12: using MPI
with simple C programs
parallel_sum.c and
parallel_square.c.
- L-6 01/23/12: Pleasingly
Parallel Computations
with simple C programs
sprng_hello.c,
sprng_seed.c,
sprng_estpi.c,
sprng_estpi_mpi.c,
sprng_normal.c,
sprng_normald.c, and
sprng_mtbf.c.
- L-7 01/25/12: Load Balancing
with simple C programs
mandelbrot.c,
static_loaddist.c, and
dynamic_loaddist.c.
- L-8 01/27/12: Data Partitioning
with a simple C program
fan_out_integers.c,
- L-9 01/30/12: Introduction to OpenMP
with simple C programs
hello_openmp0.c,
hello_openmp1.c,
comptrap.c, and
comptrap_omp.c.
- L-10 02/01/12: Introduction to Pthreads
with simple C programs
hello_pthreads.c and
process_jobqueue.c.
- L-11 02/03/12: Introduction
to the Intel Threading Building Blocks
with simple C++ programs
hello_task_group.cpp,
powers_serial.cpp, and
powers_tbb.cpp.
- L-12 02/06/12: Parallel
Sorting Algorithms
simple C programs using qsort:
use_qsort.c,
time_qsort.c,
part_qsort.c, and
part_qsort_omp.c.
Compile part_qsort_omp.c with gcc -fopenmp.
simple C++ programs using STL sort:
use_stl_sort.cpp and
time_stl_sort.cpp.
- L-13 02/08/12: Parallel
Numerical Integration
simple C++ programs:
qd4sqrt2.cpp,
romberg4piqd.cpp,
romberg4piqd_omp.cpp, and
parsum_tbb.cpp.