logo资料库

中科院PETSc使用指南(中文).pdf

第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
资料共38页,剩余部分请下载后查看
PETSc 用户指南
中科院计算机网络信息中心超级计算中心
NCIC-SC-001, SCCAS
目录
前言
1 PETSc简介
1.1 概况 ……….……………………………………..……………………….1
1.2 体系结构 ………………………………………………………………… 1
1.3 基本特色 ………………………………………………………………….4
1.4 安装PETSc ……………………………………………………………….5
2 PETSc的基本对象
2.1 向量 ……………………………………………….……………….………7
2.1.1 创建和聚集 ………………………. ……………………….…….………7
2.1.2 基本运算操作 ………………………. ……………………….…….……8
2.1.3 索引和排序 …………………………. …………………….…….………8
2.1.4 规则网格与DA …………….……………………………….…….………9
2.1.5 无结构网格与IS …………………………………………………….……10
2.2 矩阵 ……………………………………………….………………. . . .… 11
2.1.1 创建和聚集 ………………………. ……………………….……………11
2.1.2 基本运算操作 ………………………. …………………….…….……...11
2.1.3 无矩阵运算 ………………………….…………………….…….………12
2.1.4 矩阵的划分 …………………………………. ……………………….……12
3 PETSc的基本功能
3.1 线性方程求解 ……………………………………………………………13
3.1.1 基本用法 ………………………. ………………………. . . .….……… 13
3.1.2 Krylov子空间方法 ……………….………………………….…….……13
3.1.3 预条件子 …………………………….……………………….…….……14
3.1.4 奇异方程求解 ………………………….………………….…….………16
3.2 非线性方程求解 ………………………………………………………… 16
3.2.1 基本用法 ………………………. ………………………….…….………17
3.2.2 非线性解法器 ………………………. ……………………….…….……17
3.2.3 无矩阵方法 …………………………. …………………….…….………17
3.2.4 有限差分雅可比逼近 ……… ……….………………….… ….……… 18
3.3 时间步进积分 …………………………………………………………… 18
3.3.1 基本用法 ………………………. ………………………. . . .….……… 19
3.3.2 求解时间依赖问题 …………………. ……………………… . …….… 19
3.3.3 求解时间稳态问题 …………………. ……………………… . …….… 19
3.3.4 其它求解器 ………………… ………. …………………….……. …… 19
3.4 PETSc的其他功能 ……………………………………………………… 20
3.4.1 性能分析 ………………………. ……………………….……. . .………20
3.4.2 图形输出 ……………………………. ……………………….…….……22
3.4.3 调试和错误检测 ……………………. …………………….…….………23
3.5 PETSc与其它软件 ………………………………………………… …… 23
3.5.1 DMMG ………………………. …………………………….…….………24
3.5.2 ADIC/ADIFOR ……………………. ……………………….……. . ...… 24
3.5.3 Matlab …………………………. …………………….……. . . . . . .…… 24
3.5.4 ESI ………………………. ……………………….…….…. . . . . . . . . ..… 24
4 PETSc编程
4.1 PETSc程序范例 ………………………………………………………… 25
4.2 PETSc程序结构 ………………………………………………………… 28
5 PETSc范例测试
5.1 线性方程求解 ……………………………………………………………29
5.1.1 范例简介 …………………………. ……………………………………29
5.2 非线性方程求解 ……………..………………………………………… 30
5.2.1 范例简介 ………………………………………………………………. 30
5.3 时间步进积分 ……………………………………………………………31
5.3.1 范例简介 …………………………………………………………….… 31
6 PETSc测试总结
参考文献
超超级级计计算算环环境境基基础础并并行行软软件件平平台台建建设设与与应应用用 并并行行软软件件开开发发小小组组系系列列测测试试报报告告之之一一 PETSc 用户指南 中中科科院院计计算算机机网网络络信信息息中中心心超超级级计计算算中中心心 http:://www.sccas.cn/sce Email: walls@sccas.cn 程强 迟学斌 冯仰德 王建 赵永华 NNCCIICC--SSCC--000011,, SSCCCCAASS 22000044 年年 88 月月,,北北京京
目录 前言 1 PETSc 简介 1.1 概况 ……….……………………………………..……………………….1 1.2 体系结构 ………………………………………………………………… 1 1.3 基本特色 ………………………………………………………………….4 1.4 安装 PETSc ……………………………………………………………….5 2 PETSc 的基本对象 2.1 向量 ……………………………………………….……………….………7 2.1.1 创建和聚集 ………………………. ……………………….…….………7 2.1.2 基本运算操作 ………………………. ……………………….…….……8 2.1.3 索引和排序 …………………………. …………………….…….………8 2.1.4 规则网格与 DA …………….……………………………….…….………9 2.1.5 无结构网格与 IS …………………………………………………….……10 2.2 矩阵 ……………………………………………….………………. . . .… 11 2.1.1 创建和聚集 ………………………. ……………………….……………11 2.1.2 基本运算操作 ………………………. …………………….…….……...11 2.1.3 无矩阵运算 ………………………….…………………….…….………12 2.1.4 矩阵的划分 …………………………………. ……………………….……12 3 PETSc 的基本功能 3.1 线性方程求解 ……………………………………………………………13 3.1.1 基本用法 ………………………. ………………………. . . .….……… 13 3.1.2 Krylov 子空间方法 ……………….………………………….…….……13 3.1.3 预条件子 …………………………….……………………….…….……14 3.1.4 奇异方程求解 ………………………….………………….…….………16 3.2 非线性方程求解 ………………………………………………………… 16 3.2.1 基本用法 ………………………. ………………………….…….………17 3.2.2 非线性解法器 ………………………. ……………………….…….……17 3.2.3 无矩阵方法 …………………………. …………………….…….………17 1
3.2.4 有限差分雅可比逼近 ……… ……….………………….… ….……… 18 3.3 时间步进积分 …………………………………………………………… 18 3.3.1 基本用法 ………………………. ………………………. . . .….……… 19 3.3.2 求解时间依赖问题 …………………. ……………………… . …….… 19 3.3.3 求解时间稳态问题 …………………. ……………………… . …….… 19 3.3.4 其它求解器 ………………… ………. …………………….……. …… 19 3.4 PETSc 的其他功能 ……………………………………………………… 20 3.4.1 性能分析 ………………………. ……………………….……. . .………20 3.4.2 图形输出 ……………………………. ……………………….…….……22 3.4.3 调试和错误检测 ……………………. …………………….…….………23 3.5 PETSc 与其它软件 ………………………………………………… …… 23 3.5.1 DMMG ………………………. …………………………….…….………24 3.5.2 ADIC/ADIFOR ……………………. ……………………….……. . ...… 24 3.5.3 Matlab …………………………. …………………….……. . . . . . .…… 24 3.5.4 ESI ………………………. ……………………….…….…. . . . . . . . . ..… 24 4 PETSc 编程 4.1 PETSc 程序范例 ………………………………………………………… 25 4.2 PETSc 程序结构 ………………………………………………………… 28 5 PETSc 范例测试 5.1 线性方程求解 ……………………………………………………………29 5.1.1 范例简介 …………………………. ……………………………………29 5.2 非线性方程求解 ……………..………………………………………… 30 5.2.1 范例简介 ………………………………………………………………. 30 5.3 时间步进积分 ……………………………………………………………31 5.3.1 范例简介 …………………………………………………………….… 31 6 PETSc 测试总结 参考文献 2
前言 通过计算手段进行重大科学发现,已普遍为人们所共识。从传统科学与工程领域 如航空航天、地震预报、气候预测、大型水利建设和石油地质勘探,到大型基因 组测试、新药设计和新材料合成等新兴科学研究领域,无处不需要大规模数值模 拟和科学计算。在当今社会,科学计算已经逐渐成为影响和关系到一个国家经济 发展、科技进步和国家安全的关键性环节。 2002 年 10 月,中国科学院确立了“十五”信息化建设规划项目“超级计算环境 建设与应用”,而“基础并行软件平台建设”又为其核心开发内容之一。它以基 础并行软件环境开发为主要目标,通过广泛搜集目前流行的数值和并行应用软 件,进行深层次研究和开发,改进和提高计算性能,并最终移植到特定计算环境 如正在建设的国家网格节点上,主要供国内从事科学计算的广大科技人员共享。 同时,我们也正逐步开发一系列具有重要应用价值的数值软件和面向网格的科学 计算平台,并率先在国内开展自动微分算法的应用基础研究,以及逐渐开发一系 列自动微分软件包和数值微分计算环境。 在此背景下,我们将陆续推出 PETSc、TAO、FFTW、DOUG 等系列并行软件在 深腾 6800 上的测试报告,这包括应用和开发两个方面的目标。一方面,我们希 望通过这些相对成熟的并行软件在一些典型应用上的成功来改变或导向人们传 统的“从无到有”编程思路,我们希望科学家与工程师们更多的依赖这些成熟的、 高性能的软件资源以便更高层次开发其应用程序,从而获得可比较性的性能提 高。另一方面,任何软件的“成熟性”和可靠性都只能是相对的,不同的应用和 不同的体系结构会有不同的代价和性能,以及体系结构的不断发展和变化与应用 之间的相互作用对任何软件的生命期都可能是致命的。在典型应用的驱使下,我 们希望能够基于这些并行软件做一些高层次的研究和开发。 基础并行软件平台建设与应用开发计划包括以下三个方面: 1. 数值并行软件的移植及其性能优化。主要包括可移植、可扩展科学计算工具 箱(PETSc)、大型稀疏线性方程组并行迭代求解(AZTEC)、高级最优化工 具箱(TAO)、非线性与微分/代数方程解法器(SUNDIALS)、FFTW、LAPACK、 ScalLAPACK、稀疏矩阵特征值问题并行求解(PARPACK)和无结构网格上 的区域分解(DOUG)等内容。 2. 自主开发一些高性能数值与并行计算软件包。这些软件包主要包括并行特征值 求解器(PSEPS)、自动微分转换系统(DFT)、自动伴随生成器系统(ADG) 和并行多维 FFT 软件包(PMDFFT)等内容。 3
3. 举办用户培训和相关学术会议,推动并行软件的应用和研究开发。主要包括 PETSc、TAO、DOUG 等基础并行数值软件的应用,以及 LINUX/UNIX/网格 应用、并行计算方法及其相关内容。 最后,我们热忱欢迎国内外所有来自不同学科、不同专业领域的科学家和工程技 术人员就更为广泛的科学和工程计算问题提出建议。我们的联系方式: 单位:中国科学院计算机网络信息中心超级计算中心 网站:http://www.sccas.cn/sce 电话:(86-10) 5881-2132 邮件:walls@sccas.cn 地址:北京中关村南 4 街 4 号 通信:北京 349 信箱,SC,100080 4
1 PETSc 简介 1.1 概况 PETSc (Portable, Extensible Toolkit for Scientific Computation) 是美国能源部 ODE2000 支持开发的 20 多个 ACTS 工具箱之一,由 Argonne 国家实验室开发 的可移植可扩展科学计算工具箱,主要用于在分布式存储环境高效求解偏微分 方程组及相关问题。PETSc 所有消息传递通信均采用 MPI 标准实现。 PETSc 用 C 语言开发,遵循面向对象设计的基本特征,用户基于 PETSc 对象可 以灵活开发应用程序。目前,PETSc 支持 Fortran 77/90、C 和 C++编写的串行 和并行代码。 PETSc 是系列软件和库的集合,三个基本组件 SLES、SNES 和 TS 本身基于 BLAS、LAPACK、MPI 等库实现,同时为 TAO、ADIC/ADIFOR、Matlab、ESI 等工具提供数据接口或互操作功能,并具有极好的可扩展性能。PETSc 为用户 提供了丰富的 Krylov 子空间迭代方法和预条件子,并提供错误检测、性能统计 和图形打印等功能。 如今,越来越多的应用程序在 PETSc 环境上开发,并逐渐显示出 PETSc 在高效 求解大规模数值模拟问题方面的优势和威力。 PETSc 最新版本为 petsc-2.2.1,PETSc 网站:http://www.mcs.anl.gov/petsc。 目 前,PETSc 3 正在开发中。 1.2 体系结构 不同于其它微分/代数方程解法器,PETSc 为用户提供了一个通用的高层应用程 序开发平台。基于 PETSc 提供的大量对象和解法库,用户可以灵活地开发自己 的应用程序,还可随意添加和完善某些功能,如为线性方程求解提供预条件子、 为非线性问题的牛顿迭代求解提供雅可比矩阵、为许多数值应用软件和数学库 提供接口等。图 1 表示了 PETSc 在实现层次上的抽象,图 2 具体列举了 PETSc 的基本数值部件。这里做简要说明。 应用程序:用户在 PETSc 环境下基于 PETSc 对象和算法库编写的串行或并行应 用程序。尽管 PETSc 完全在 MPI 上实现,但 PETSc 程序具有固定的框架结构, 即有初始化、空间释放和运行结束等环境运行语句。 PDE 解法器:用户基于 PETSc 的三个基本算法库(TS、SNES 和 SLES)构建 的偏微方程求解器。但它却不是 PETSc 的基本组件。 1
TS:时间步进积分器,用于求解依赖时间或时间演化的 ODE 方程,或依赖时 间的离散化后的 PDE 方程。对于非时间演化或稳态方程,PETSc 提供了伪时间 步进积分器。TS 积分器最终依赖线性解法器 SLES 和非线性解法器 SNES 来实 现。PETSc 为 PVODE 库提供了接口。另外,TS 的用法非常简单方便。 SNES:非线性解法器,为大规模的非线性问题提供高效的非精确或拟牛顿迭代 解法。SNES 依赖于线性解法器 SLES,并采用线性搜索和信赖域方法实现。SNES 非常依赖于雅可比矩阵求解,PETSc 既支持用户提供的有限差分程序,同时又 为用户提供了依赖 ADIC 等自动微分软件生成的微分程序接口。 SLES:线性解法器,它是 PETSc 的核心部分。PETSc 几乎提供了各种高效求 解线性方程的解法器,既有串行求解也有并行求解,既有直接法求解也有迭代 法求解。对于大规模的线性方程,PETSc 提供了大量基于 Krylov 子空间方法和 预条件子的各种成熟而有效的迭代方法,以及其它通用程序和用户程序的接口。 PDE 解法器 应 用 程 序 TS (时间步进) SNES (非线性方程解法器) SLES (线性方程解法器) KSP (Krylov 子空间方法) PC (预条件子) Draw 矩阵 向量 索引集 BLAS LAPACK MPI 图 1:PETSc 实现的层次结构 KSP:Krylov 子空间方法,广泛涉及 Richardson 方法,共扼梯度法(CG 和 BiCG), 广义最小残差法(GMRES),最小二乘 QR 分解(LSQR)等。 PC:预条件子,包括雅可比矩阵,分块雅可比矩阵,SOR/SSOR 方法,不完全 Cholesky 分解,不完全 LU 分解,可加性 Schwartz 方法,多重网格预条件子等。 DRAW:应用程序的性能分析和结果显示。 2
非线性解法器 牛顿迭代法 线搜索 信赖域 其它 Euler 方法 时间步法 向后 Euler 方法 拟时间步 其它 GMR Krylov 子空间方法 CG CGS Bi-CG-Sta TFQMR Richardson Chebyshev 其它 预条件子 加法 Schwarz 块 Jacobi Jacobi ILU ICC LU 其它 矩阵 压缩稀疏行(AIJ) 块压缩稀疏(BAIJ) 块对角(BDiag) 稠密 其它 向量 索引集 索引 块索引 跨度 其它 图 2:PETSc 的数值组件 矩阵:PETSc 的基本数据对象。与向量对象不同,一个 PETSc 的矩阵对象首先 是在局部(各个进程)数据填充完成之后再对其进行全局聚集,然后再由 PETSc 对象统一管理和实现矩阵的各种运算和操作。当问题的计算规模较大时,稀疏 矩阵的填充将是影响程序性能的关键因素。PETSc 还专门为用户提供了的单纯 依赖向量来实现矩阵基本运算(或无矩阵运算)的接口。 向量:PETSc 的基本数据对象。对于规则的正交网格,PETSc 自动对向量进行 划分,并通过分布式存储向量(即 DA 对象)来管理。通过 DA 对象,用户可 以简单地实现向量的分发、聚集、局部和全局之间的相互映像、边界点的通信 等基本操作。DA 对象隐藏了进程之间的通信,用户只需提供全局的向量结构 和数值。但对于无结构网格,用户则可以通过索引集(即 IS 对象)来实现向量 的分发、聚集、映像、边界点的通信等基本操作。 索引集:它是一系列数据操作对象的集合,专门用来管理无结构网格向量的分 发、聚集、局部和全局之间的映像、边界点的通信等基本操作。 3
分享到:
收藏