Scientific Computing Spring 2006
Peter Gottschling
Open Systems Lab
Indiana University
Course Overview
- Introduction
- Computing intensive applications
- Limits of single-processor computers
- Performance of modern computers
- Floating point arithmetic
- IEEE floating point arithmetic
- Error analysis
- Exception handling
- Risks of parallel computation
- Vector operations
- Vector addition
- Dot product
- Matrix vector product
- Matrix multiplication
- Simple multiplication
- Memory efficient algorithms
- Blocked methods
- Simulations of discrete objects
- Discrete systems, i.e. discrete objects with discrete states
- Particle systems, i.e. discrete objects with continuous states
- Barnes-Hut algorithm
- Solution of partial differential equations
- PDE in physical processes
- Grids
- Discretization
- Matrices
- Overview of solvers for linear equations
- Sparse matrices and their distributed storing
- Storing structured and unstructured matrices
- Matrix vector product sequential with performance analysis
- Introduction into generic programming
- Janus: Generic handling of data structures
- Same handling of structured and unstructured matrices
- Realization implicitly in matrix vector operations
- Sample programs
- Direct solvers for linear equations
- Gaussian elimination
- Equivalence with LU factorization
- Parallel Gaussian elimination
- Band matrices
- Direct solvers for sparse systems
- Linear solvers for sparse systems I
- Cyclic reduction of tri-diagonal matrices
- Jacobi method
- Gauß-Seidel method
- Blocked Gauß-Seidel method
- Linear solvers for sparse systems II
- Over-relaxation
- CG method
- Preconditioning: Jacobi, SSOR, red-black method
- Multigrid methods (based on a tutorial from Klaus Stüben)
- Why multigrid?
- Basic principles
- Full multigrid
- Local refinements
- Graph algorithms I
- Terminology
- Hamiltonian cycles
- Depth-First search
- Breadth-First search
- Graph algorithms II
- Shortest path
- Spanning trees
- Maximum flow
The content can be slightly changed. But not very much.