Ananth Grama, George Karypis, Vipin Kumar, and Anshul Gupta Introduction to Parallel Computing (2nd Edition), Addison-Wesley, 2003
Rob Bisseling, Parallel Scientific Computations - A structured approach using BSP and MPI, Oxford University Press, 2004
Afonso Ferreira and Jose D. P. Rolim, Parallel Algorithms for Irregular Problems: State of the Art, Kluwer Academic Publishers, 1995
C. Xavier and S. S. Iyengar, Introduction to Parallel Algorithms, John Wiley & Sons, 1998
Additional readings from research papers will be indicated in class.
Students are responsible for checking the announcements regularly. For important announcements, click here.
The course will cover material from the following topics:
Fundamentals:
Introduction to Scientific Computing.
scientific problems and their characteristics
the impact of parallel programming on performance and numerical properties
Fundamentals of parallel and distributed computing: theory and practice
models of parallel computation (i.e., PRAM, BSP, LOGP, etc)
parallel programming paradigms (data parallel, message passing and shared memory with multithreading)
mapping algorithms onto architectures (partitioning, allocation, scheduling)
performance analysis, evaluation and prediction (load balancing, communication, overhead)
A closer look at numerical properties, parallel algorithms and architectures: methods and tradeoffs
The impact of numerical properties on the performance
of scientific applications cases studied (i.e., discrete
Poisson equation using Jacobi or Multigrid methods, SOR,
Conjugate Gradient and the FFT; hierarchical methods for
the N-Body problem, etc)
Algorithms of common use (i.e., parallel sorting, parallel
matrix multiplication, graph partitioning, fast algorithms
using trees)
Recent technological advances in parallel architectures
and their impact in the programming design methodology
(i.e., cluster computing, parallelizing compilers, etc).
Scheduling and load balancing algorithms: theory and
practice
Advanced scheduling methods, dynamic task scheduling, and
loop scheduling
Load balancing methods (deterministic and stochastic
algorithms, optimality analysis, methods using
combinatorial optimization)
Important issues visited in case studies
Recent progress in high accuracy and high performance
of linear algebra algorithms
Sources of parallelism and locality in simulation
The impact of memory hierarchy in the algorithm design
Scalability analysis of parallel applications
Combinatorial aspects in scientific computing
The impact of new technology in the design of parallel
scientific applications
[INSTRUCTOR] [HOURS] [PREREQUISITES] [OBJECTIVES] [REQUIREMENTS] [GRADING] [ANNOUNCEMENTS] [OUTLINE]