B673: Advanced Scientific Computing

Parallel Programming - Spring 2009
B673

Contents


General Information

Instructor:
Class meets in LH115, Mon-Wed 4-5PM. Later we'll just do it on Mondays, once you get up to speed.

Prerequisites: This course is primarily on practical aspects and modeling for parallel computing. Another course, B524, covers the programming languages aspects of parallelism, and is taught in alternating semesters with B673. B673 concentrates more on applications, performance engineering of parallel codes, and emerging issues in high-performance computing: file systems, data management, and access to online data systems, instruments, and sensors.

Textbooks:
Much of the course material is on the Web and covered in class. There are some outstanding books on the area of parallel computing, generally concentrating on one aspect or another. If you want to buy one, my recommendation is to wait until after the course is over, when you know what material is most useful to you. Do not print off the books listed below It is a major waste of paper to do so, our use of them will be negligible, and the online versions are often updated and better curated.

MPI: The Complete Reference by Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, and Jack Dongarra is the most useful one for looking up MPI functions and their calling sequences. This covers MPI-1.
Using MPI-2: Advanced Features of the Message Passing Interface by William Gropp, Ewing Lusk and Rajeev Thakur. This covers the MPI-2 standard, with some extensions that are not fully implemented yet by any supplier. It is likely that most of MPI-2 will be available by mid-November 2004.
Parallel Computing Works! by Geoffrey C. Fox, Roy D. Williams, and Paul C. Messina is now somewhat dated but its description of applications is still excellent. Unfortunately the Web version is not very readable.
Designing and Building Parallel Programs, by Ian Foster is another book that concentrates on the programming aspects of parallel machines.
Sourcebook of Parallel Computing by Jack Dongarra et al has more sophisticated applications than we will implement in this class, but the chapters on parallel I/O, graph partitioning, and numerical linear algebra are relevant.

Course Description

This course covers the basic theory and practice of parallel computing. Extremely simple parallel architecture ideas and basic analytical models of parallelism will be presented. Software tools for parallel programming and performance analysis will be surveyed along with some current parallel programming models, languages, packages, and systems. Students will implement and analyze parallel algorithms as part of the course. The focus is on the practical modern use of parallel programming for numerical computing.

Course Outline

The following outline is not a chronological one. For example, we will quickly introduce MPI so that it can be used in programming assignments. An item's level in the outline also does not reflect the actual weight or importance of the item: we will spend much time on MPI and pthreads, but the SIMD/SPMD/MIMD distinction will receive only a few minutes of attention.

  1. Hardware taxonomies and architecture
    1. Memory organization
      1. Shared memory machines
      2. Distributed memory machines and interconnection networks.
      3. Hybrid memory machines; CC-NUMA
    2. Vector processing
    3. Parallel programming models: SIMD, SPMD, MIMD
  2. Performance modeling and analysis
    1. The n1/2-rinfinity vector model
    2. Speedups and parallel efficiency; Amdahl's Law; isoefficiency curves
    3. Message passing models
    4. Scalability definitions and models
  3. Model problems and parallel algorithms
    1. Dense matrix operations
    2. Fast Fourier Transforms
    3. Sparse matrix operations
    4. N-body problems
    5. PDE solvers and domain decomposition
  4. Software and tools for parallelism
    1. Compilation techniques.
    2. Parallel languages
    3. Message passing interface
    4. Pthreads and OpenMP
    5. Performance evaluation
  5. Parallel I/O

Dynamic Class Informtion

The course webboard will be used to post announcements, assignments, corrections, and other information. It should be accessible by Wednesday, 28 Jan. Use it to post questions related to the course or share related information with the class. Check the Web board frequently, since any changes or corrections to assignments will appear there. It will use SSL access validated by your IU netpass password, allowing you to access it from outside of the IU domain.

Grading Policies


Change log for this page:

  • Initiated: 26 Jan 2009
  • Restructured: 26 Jan 2009