HPC 与并行计算学习路径
学习目标
理解科学计算程序如何从单进程有限元计算扩展到分布式内存 MPI 程序,并掌握 PETSc 的分布式矩阵和求解器接口。
学习顺序
- 共享内存与分布式内存模型;
- 图划分与网格分区;
- Owned / Ghost 节点和自由度;
- Global ID、Local ID 与 PETSc algebra index;
- MPI halo exchange 和向量同步;
- AIJ 稀疏矩阵的对角与非对角预分配;
- 分布式装配和远程行贡献;
- Krylov 方法、FieldSplit 和 Schur 补;
- 强扩展、弱扩展、负载均衡和内存分析。
两个重要的分布式概念
每个 MPI rank 拥有一部分全局自由度,并可能保存其他 rank 自由度的 ghost 副本。拥有关系决定谁负责最终存储和规约;ghost 副本用于本地单元计算。
对一个 rank 的矩阵行,列可分为:
- 对角块:列自由度也由本 rank 拥有;
- 非对角块:列自由度由其他 rank 拥有。
这正是 PETSc MPIAIJ 预分配所需的两个计数。
EONSim 对应代码
练习
- 给定一个 Tet4 单元,画出它在两个 rank 上的 owned/ghost 节点。
- 对一个本地 owned 行,统计 diagonal 和 off-diagonal 非零元。
- 解释为什么远程单元可以贡献本地 owned 行。
- 比较全局编号、局部编号和 Field IS 的职责。