**Course No.****：**S070102ZJ006

**Course Category****：**Professional Basic Course

**Period/Credits****：**40/2

**Aims & Requirements****：**

This course is one of the speciality foundation courses for those master degree candidates majoring in computational mathematics. It can also be taken as an elective course for those majoring in other specialities. This course principally introduces architecture of parallel computers, Linux operating systems and development of numerical programming, parallel algorithm design, MPI programming and parallel computing softwares etc. This course aims to develop students’ ability of parallel scientific computing and programming and lay the foundation for related work and research.

**Primary Coverage****：**

Chapter 1 Preliminary knowledge

Architecture of parallel computing and computers; Linux operating system; numerical computing program development and debugging tools under Linux system.

Chapter 2 MPI message passing programming

MPI programming; Examples of parallel algorithms and parallel program design.

Chapter 3 Software library for fundamental mathematics

Introduction to BLAS, LAPACK, FFTW, ScaLAPACK software library for fundamental mathematics.

Chapter 4 Introduction to open source softwares for high-performance calculations

Mesh generation: Tetgen, Netgen, Gmsh;

Parallel domain decomposition, graph partitioning: METIS/ParMETIS, Zoltan ;

Solving sparse linear equation systems:

Direct methods: PARDISO, MUMPS, SuperLU, SPOOLES, SuiteSparse;

Iterative methods: PETSc、Hypre、Trilinos;

Calculation of eigenvalues and eigenvectors of sparse matrices:

ARPACK/PARPACK、SLEPc、BLOPEX、JDBSYM.

Chapter 5 Selections of development platform PHG for parallel adaptive finite element software

How to use PHG to develop parallel adaptive finite element program.

**References****：**

[1] ZHANG Linbo, et al., Introduction to Parallel Computing, Tsinghua University Press, 2006.

[2] ZHANG Linbo, Lecture notes for the course ‘parallel computing’ (2001，ftp://ftp.cc.ac.cn/pub/home/zlb/bxjs).

[3] SUN Jiachang, et al., Network parallel computing and distributed programming environment.

[4] MO Zeyao, et al., Message passing parallel programming environment MPI.

[5] DU Zhihui, et al., Parallel programming environment.

[6] http://www.mpi-forum.org.

**Author****：**Linbo Zhang (Academy of Mathematics and Systems Science)

**Date****：**June, 2009