大家好,欢迎来到IT知识分享网。
PETSc架构介绍和解释
PETSc软件架构
| 说明 | 备注 | |
|---|---|---|
| 工具 | 运行选项、调试和性能工具、可视化工具等 | |
| 数学计算 | 矩阵、向量、线性/非线性求解器、优化算法求解器等 | |
| 底层依赖库 | 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)
细节
- Vec以分布式方式存储在多个MPI进程上
- 稀疏矩阵以AIJ(CSR)格式存储。对MPI多进程,稀疏矩阵在ROW方向上进行划分,每个进程内会将对角部分(diagonal block)和非对角部分(off-diagonal block)分开存储
- 通过IS(Index Sets)提供复杂索引操作(e.g.,gather/scatter)
PETSc并行、GPU异构计算支持(MPI&Thread&GPU)
- 以”shared nothing”原则设计
- 分布式计算主要基于MPI进程间显示通信设计。有基于MPI和NVSHMEM的通信组件PetscSF
- 对多线程(OpenMP/Threads)提供有限支持
- 以扩展插件形式支持GPU异构计算(3.17版本已经集成CUSPARSE和ViennaCL)
PETSc并行分布式通信组件:PetscSF
- 聚焦全局Array&Vec复杂数据交换场景
- 基于Star Forest Graph图拓扑设计进程间通信模式
- 基于MPI one-sided RMA和two-sided P2P通信原语
- 基于NVSHMEM,支持多GPU卡硬件环境
PETSc和第三方库接口(interfaces)
- PETSc采用插件(plugin)设计方式,可以和多种第三方软件进行集成。集成的工作主要在核心对象Mat&Vec进行格式转换对接,PETSc无需知道对方源码细节.
- 有非常多的第三方集成案例. 常见第三方集成:Hypre、Mumps、SuperLU、AMGCL、AMGX、OpenFOAM等
官方资料
- API Doc
- 所有支持的Vector形式
- 所有支持的Matrix形式
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/109519.html
