Parallel Computing for Computational Mechanics Syllabus
The course will take place on Wednesdays, 11:45–14:00 at the main seminar room 101 in GRS building, Schinkelstr. 2a (ground floor).
Office hours: by appointment.
Workload: 3 SWS (plus 2 SWS exercise/practice for Simulation Sciences students).
Instructor: Prof. Marek Behr
Assistant: Dipl.-Phys. Eva Schlauch
This course will introduce analysis techniques that exploit modern computing engines to solve computational mechanics problems, with emphasis on fluid flows and finite element methods. Sections of the course will concentrate on discretization methods, scalar optimization, parallel computing, and practical aspects of parallel finite element implementations. A prior knowledge of FORTRAN or C programming, and familiarity with the UNIX operating system are prerequisite. Course requirements include class participation and completion of hands-on programming projects.
Graduate students in the course will:
- Become acquainted with commonly used discretization techniques, and their role in the analysis of continuum mechanics problems
- Be exposed to currently available high performance computing platforms
- Learn to improve the efficiency of their analysis codes by using programming techniques that take into account the memory hierarchy of the processing unit
- Begin to apply parallelization techniques in order to dramatically reduce time required to complete the numerical simulation
- Explore the internal workings of a parallel finite element implementation for fluid flow analysis
Class participation 20%
Projects 40% (take-home)
Although the course will not follow one particular textbook, the following books will help further the understanding of the topics under discussion:
- T. Mattson, B. Sanders and B. Massingill, Patterns for Parallel Programming, Addisson-Wesley, (2005)
- M. Heath, Scientific Computing: An Introductory Survey, McGraw-Hill, (2002)
- K. Dowd and C. Severance, High Performance Computing, O'Reilly, (1998)
- Introduction. Engineering apps.
- Equations of fluid dynamics. Engineering apps (cntd). Discretization. Components of finite element code. Mesh generation intro.
- Mesh generation discussion.
- Initial conditions. Time stepping. Linearization. Equation system solving. Postprocessing.
- Computer performance and requirements. Computer evolution: scalar, vector, parallel.
- Memory hierarchy. Data caches. Commercially available CPUs.
- Scalar optimization. Memory access patterns. Loop restructuring.
- Instruction cache. Automatic optimization. Intel compilers. Scalar optimization exercises.
- Motivation for parallelism. History of parallel computing.
- Finding parallelism. Speed-up. Amdahl's law. Taxonomy of parallel computers.
- Interconnects. Commercial parallel computers. Supercomputing initiatives.
- Parallelization via compiler directives. OpenMP.
- Native compiler directives.
- Scheduling. Parallelization exercises.
- Parallelization via language extensions. High Performance Fortran.
- Message-passing concepts. Historical note: Parallel Virtual Machine.
- Message Passing Interface.
- MPI communication, tools. MPI-2.
- Portability issues. Makefiles. CVS.
- Review of computational mechanics program. Program blocks: integration.
- Program blocks: FE matrices and vectors, assembly.
- Program blocks: matrix storage options, GMRES.
- Recent developments: VLIW, Cell, new programming languages. Future of supercomputing.
A reasonable attendance is expected, and is essential in order to fulfill the class participation requirement. Every attempt will be made to enable processes of active learning, hopefully alleviating the following:
Problem with lectures is that information passes from the notes of the instructor to the notes of the student without passing through the minds of either one.
Lecture notes will be posted on the course web page, but will not include notes from the associated class discussion.