☰
PETSc介绍
2026/10/15 1:48:21 网站建设 项目流程

文章目录

  • PETSc架构介绍和解释
      • PETSc软件架构
      • PETSc数值计算库架构
      • PETSc底层核心数学对象(Mat&Vec)
      • 细节
      • PETSc并行、GPU异构计算支持(MPI&Thread&GPU)
      • PETSc并行分布式通信组件: PetscSF
      • PETSc和第三方库接口(interfaces)
      • 官方资料

PETSc架构介绍和解释


PETSc软件架构

PETSc核心是为学科领域内的ODE方程和PDE方程提供数值计算工具Toolkit, 同时配备有完整程序开发需要的日志、调试、优化等功能。

说明备注
工具运行选项、调试和性能工具、可视化工具等
数学计算矩阵、向量、线性/非线性求解器、优化算法求解器等
底层依赖库BLAS、LAPACK、MPI、CUDA、CL等

PETSc数值计算库架构

说明备注
基础数学对象Mat,Vec,Index
几何拓扑对象管理DMDA、DMPlex
稀疏矩阵迭代求解器KSP、PC
非线性方程求解器SNES
优化求解器TAO
时间域求解器TS

另一张架构截图


PETSc底层核心数学对象(Mat&Vec)

  • 完全面向对象设计,支持多态
  • 对上层应用(e.g.,KSP)提供统一抽象通用接口(e.g., Add,Sub,Mul等)
  • 支持运行时配置(options)
  • 支持串行(SEQ)和并行分布式(MPI)数据布局
  • 提供第三方扩展插件集成(e.g., CUSPARSE)

核心对象: Mat,Vec,IS

细节

8个进程的Vec和Mat存储示意图: 矩阵向量乘法

  • Vec以分布式方式存储在多个MPI进程上
  • 稀疏矩阵以AIJ(CSR)格式存储。对MPI多进程,稀疏矩阵在ROW方向上进行划分,每个进程内会将对角部分(diagonal block)和非对角部分(off-diagonal block)分开存储
  • 通过IS(Index Sets)提供复杂索引操作(e.g.,gather/scatter)

稀疏矩阵整体上按ROW划分,每个进程内分成对角块和非对角块,配合Vec向量划分,可以实现计算和通信重叠: 对角块和本地向量部分进行SpMV计算,同时可接收其他进程的Vec部分数据(PETSc是为超大规模并行环境设计的,必需考虑网络通信因素)。对比HYPRE的稀疏矩阵划分, 内部只用一个CSR表示,所以通过PETSc调用HYPRE功能,会有内部矩阵格式转换开销.


PETSc并行、GPU异构计算支持(MPI&Thread&GPU)

  • 以"shared nothing"原则设计
  • 分布式计算主要基于MPI进程间显示通信设计。有基于MPI和NVSHMEM的通信组件PetscSF
  • 对多线程(OpenMP/Threads)提供有限支持
  • 以扩展插件形式支持GPU异构计算(3.17版本已经集成CUSPARSE和ViennaCL)

较新版本支持AMGX(PCAMGX)


PETSc并行分布式通信组件: PetscSF

  • 聚焦全局Array&Vec复杂数据交换场景
  • 基于Star Forest Graph图拓扑设计进程间通信模式
  • 基于MPI one-sided RMA和two-sided P2P通信原语
  • 基于NVSHMEM,支持多GPU卡硬件环境

核心计算是SpMV和向量内积, 核心通信是不规则All-to-All通信和Allreduce。PetscSF官方手册


PETSc和第三方库接口(interfaces)

  • PETSc采用插件(plugin)设计方式,可以和多种第三方软件进行集成。集成的工作主要在核心对象Mat&Vec进行格式转换对接,PETSc无需知道对方源码细节.
  • 有非常多的第三方集成案例. 常见第三方集成:HYPRE、HPDDM、MUMPS、SuperLU、AMGCL、AMGX、OpenFOAM等

官方资料

  • API Doc
  • 所有支持的Vector形式
  • 所有支持的Matrix形式

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询