Introduction to Parallel Computing (184.710)
Plan
Lecture with practical project part (VU).
Lecture Monday 11.00 - 12.45, first 10.10.2011. All potential students should
be present. Additional slot: Thursday, 12.00 - 14.00. Seminarroom 121.
Note: due to construction work, the lecture may be blocked toward the
end of the semester. Cluster and shared-memory node system for the practical
part are under installation.
Overview
Introduction to parallel computing, basic concepts, history,
motivation. Shared-memory parallel computing, concrete language:
OpenMP. Distributed memory computing, concrete interface: MPI.
New architectures (GPU and others), new languages, other paradigms.
Lectures, material
- Monday 10.10: planning, schedule, overview
- Thursday 13.10: Definitions, architecture and programming models, Speedup, work, cost, Amdahl's law, merging in parallel
- Monday 17.10: Practical motivations, HPC computing, superlinear speedup, reductions and prefix sums
- Monday 24.10: Shared-memory programming I: architectures, pthreads
- Monday 31.10: Shared-memory programming II: pthreads (continued), OpenMP
- Thursday 3.11: Shared-memory exercises: presentation, discussion
- Monday, 7.11: Shared-memory programming: OpenMP (continued)
- Thursday, 17.11: Distributed memory programming: Architectures, MPI
- Monday 21.11, Thursday 24.11: No Lecture
- Monday 28.11: Distributed memory programming: MPI (continued, point-to-point communication)
- Monday 5.12: Distributed memory programming: MPI (one-sided, collective)
- Monday 12.12: Distributed memory programming: MPI (benchmarking, tools)
- Thursday 15.12: MPI exercises: presentation, discussion
- Monday 19.12: No Lecture
(installation of NEC cluster)
- Merry christmas, happy new year...
- Monday 9.1: Exercises, how to use the cluster
- Thursday, 12.1: Exercises, discussion (as needed, I will leave after 10 minutes if nobody is there)
- Monday 16.1: New architectures, other programming models
- Thursday, 19.1: Exercises, discussion (as needed, I will leave after 10 minutes if nobody is there)
- Monday 23.1: New architectures, other programming models
- Thursday, 26.1: Exercises: hand-in (report/write up per email; everything on account)
- Monday 30.1: Exercise presentation, set 1 (15-30 minutes per group)
- Thursday 2.2: Exercise presentation, set 2 (15-30 minutes per group)
Resources
Standards
Canonical, indispensable when programming and debugging
Programs
-
mpihello.c
Compile with mpicc -o mpihello -O3 mpihello.c, execute
with mpirun -np 4 ./mpihello
-
openmphello.c
Compile with
gcc -Wall -fopenmp -o openmphello -O3 openmphello.c,
execute with ./openmphello -t 10
-
pthreadshello.c
Compile with gcc -Wall -o pthreadshello -O3 Opthreadshello.c -pthread,
execute with ./pthreadshello -t 25
Additional Literature
-
Thomas Rauber, Gudula Rünger:
Parallel Programming for Multicore and Cluster Systems. Springer 2010.
Good overview, complements lecture well, also with topics/applications not in
lecture.
-
Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar:
Introduction to Parallel Computing. Pearson Addison-Wesley 2003.
Good selection of material, good coverage. Beware, many detail mistakes/typos.
The lecture has material not in these books, book suggestions intended
as complements and handbooks. Nevertheless, acquiring at least one of these
books highly recommended.