Uwe Naumann and Olaf Schenk, Combinatorial Scientific Computing, CRC Press, Taylor and Francis Group, Chapman and Hall, 2012
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
Michael T. Heath, Scientific Computing - An Introductory Survey(Second Edition) , McGraw Hill, 2002
Oliver Sinnen, Task Scheduling for Parallel Systems, John Wiley & Sons, 2007
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)
Performance modeling and analysis using process algebra
Review of the process algebra methods (CCS and CSP)
Introduction to quantitative modeling (PEPA)
Modeling task scheduling with PEPA
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
Students who are auditing this course must attend at least 75% of the class lectures to avoid a grade of F.
[INSTRUCTOR] [HOURS] [PREREQUISITES] [OBJECTIVES] [REQUIREMENTS] [GRADING] [ANNOUNCEMENTS] [OUTLINE]