- Dr. Ju Liu, Assistant Professor of MAE Department
- Office: Room 1004 North Engineering Building
- Contact by email
- Chongran Zhao, Office: Room 1017 North Engineering Building, Contact by email.
This course aims to give students an in-depth understanding of the modern approach in technical and parallel computing. The students will be guided to operate computers in the Unix/Linux system and learn basic technical computing skills and gain an understanding of compilers, aotumake system, version control, code profiling and debugging, etc. The architecture of computers will be discussed, with focus on memory hierarchy, parallel design, etc. We will discuss numerical analysis to provide a background of the application. The parallel programming based on the message passing interface (MPI) will be discussed. We will also introduce modern scientific computing libraries, including PETSc, VTK, and HDF5.
- Parallel programming in C with MPI and OpenMP, Michale J. Quinn, 2003
- Computer systems: a programmer’s perspective, Randal Bryant and David O’Hallaron, 2002
- Tutorials will be distributed in class
C and C++ programming language.
Week | Topic |
---|---|
1 | Introduction to HPC |
2 | Linux/Unix basics: file system, permissions, regular expressions |
3 | Linux/Unix intermediate: vi editor, bash script programming |
4 | Serial computer architecture: memory hierarchy |
5 | Compiler: GCC and optimization flags |
6 | Makefile and CMake tutorial |
7 | Version control, Git, and GitHub |
8 | Code debugging and profiling |
9 | Numerical analysis basics: linear algebra and PDEs |
10 | Parallel computer architecture |
11 | MPI programming: basic MPI calls |
12 | MPI programming: MPI collective communications |
13 | MPI programming: performance analysis |
14 | MPI programming: implementation of matrix-vector multiplication |
15 | PETSc library |
16 | VTK for visualization and HDF5 for I/O |