PETSc用户指南.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《PETSc用户指南.docx》由会员分享,可在线阅读,更多相关《PETSc用户指南.docx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、超级计算环境根底并行软件平台建设与应用并行软件开发小组系列测试报告之一PETSc 用户指南中科院计算机网络信息中心超级计算中心 :/ Email: walls程强迟学斌冯仰德王建赵永华NCIC-SC-001, SCCAS2023 年 8 月,北京名目前言1 PETSc 简介11.1 概况11.2 体系构造11.3 根本特色41.4 安装 PETSc52 PETSc 的根本对象2.1 向量72.1.1 创立和聚拢72.1.2 根本运算操作82.1.3 索引和排序82.1.4 规章网格与 DA92.1.5 无构造网格与 IS102.2矩阵112.1.1 创立和聚拢112.1.2 根本运算操作112
2、.1.3 无矩阵运算122.1.4 矩阵的划分123 PETSc 的根本功能3.1 线性方程求解133.1.1 根本用法133.1.2 Krylov 子空间方法133.1.3 预条件子143.1.4 奇异方程求解163.2 非线性方程求解163.2.1 根本用法173.2.2 非线性解法器173.2.3 无矩阵方法173.2.4 有限差分雅可比靠近183.3 时间步进积分183.3.1 根本用法193.3.2 求解时间依靠问题193.3.3 求解时间稳态问题193.3.4 其它求解器193.4 PETSc 的其他功能203.4.1 性能分析203.4.2 图形输出223.4.3 调试和错误检测
3、233.5 PETSc 与其它软件233.5.1 DMMG243.5.2 ADIC/ADIFOR243.5.3 Matlab243.5.4 ESI244 PETSc 编程4.1 PETSc 程序范例254.2 PETSc 程序构造285 PETSc 范例测试5.1 线性方程求解295.1.1 范例简介295.2 非线性方程求解305.2.1 范例简介305.3 时间步进积分315.3.1 范例简介316 PETSc 测试总结参考文献前言通过计算手段进展重大科学觉察,已普遍为人们所共识。从传统科学与工程领域如航空航天、地震预报、气候推想、大型水利建设和石油地质勘探,到大型基因组测试、药设计和材料
4、合成等兴科学争论领域,无处不需要大规模数值模拟和科学计算。在当今社会,科学计算已经渐渐成为影响和关系到一个国家经济进展、科技进步和国家安全的关键性环节。2023 年 10 月,中国科学院确立了“十五”信息化建设规划工程“超级计算环境建设与应用”,而“根底并行软件平台建设”又为其核心开发内容之一。它以根底并行软件环境开发为主要目标,通过广泛搜集目前流行的数值和并行应用软 件,进展深层次争论和开发,改进和提高计算性能,并最终移植到特定计算环境如正在建设的国家网格节点上,主要供国内从事科学计算的宽阔科技人员共享。同时,我们也正逐步开发一系列具有重要应用价值的数值软件和面对网格的科学计算平台,并领先在
5、国内开展自动微分算法的应用根底争论,以及渐渐开发一系列自动微分软件包和数值微分计算环境。在此背景下,我们将间续推出PETSc、TAO、FFTW、DOUG 等系列并行软件在深腾 6800 上的测试报告,这包括应用和开发两个方面的目标。一方面,我们期望通过这些相对成熟的并行软件在一些典型应用上的成功来转变或导向人们传 统的“从无到有”编程思路,我们期望科学家与工程师们更多的依靠这些成熟的、高性能的软件资源以便更高层次开发其应用程序,从而获得可比较性的性能提 高。另一方面,任何软件的“成熟性”和牢靠性都只能是相对的,不同的应用和不同的体系构造会有不同的代价和性能,以及体系构造的不断进展和变化与应用之
6、间的相互作用对任何软件的生命期都可能是致命的。在典型应用的驱使下,我们期望能够基于这些并行软件做一些高层次的争论和开发。根底并行软件平台建设与应用开发打算包括以下三个方面:1. 数值并行软件的移植及其性能优化。主要包括可移植、可扩展科学计算工具箱PETSc、大型稀疏线性方程组并行迭代求解 AZTEC、高级最优化工具箱TAO、非线性与微分/代数方程解法器SUNDIALS、FFTW、LAPACK、 ScalLAPACK、稀疏矩阵特征值问题并行求解 PARPACK和无构造网格上的区域分解DOUG等内容。2. 自主开发一些高性能数值与并行计算软件包。这些软件包主要包括并行特征值求解器PSEPS、自动微
7、分转换系统DFT、自动伴随生成器系统ADG和并行多维 FFT 软件包PMDFFT等内容。3. 举办用户培训和相关学术会议,推动并行软件的应用和争论开发。主要包括PETSc、TAO、DOUG 等根底并行数值软件的应用,以及 LINUX/UNIX/网格应用、并行计算方法及其相关内容。最终,我们热忱欢送国内外全部来自不同学科、不同专业领域的科学家和工程技术人员就更为广泛的科学和工程计算问题提出建议。我们的联系方式:单位:中国科学院计算机网络信息中心超级计算中心网站: :/ :(86-10) 5881-2132邮件:walls地址:北京中关村南 4 街 4 号通信:北京 349 信箱,SC,10008
8、01 PETSc 简介1.1 概况PETSc (Portable, Extensible Toolkit for Scientific Computation) 是美国能源部ODE2023 支持开发的 20 多个 ACTS 工具箱之一,由 Argonne 国家试验室开发的可移植可扩展科学计算工具箱,主要用于在分布式存储环境高效求解偏微分方程组及相关问题。PETSc 全部消息传递通信均承受 MPI 标准实现。PETSc 用 C 语言开发,遵循面对对象设计的根本特征,用户基于 PETSc 对象可以灵敏开发应用程序。目前,PETSc 支持 Fortran 77/90、C 和 C+编写的串行和并行代码
9、。PETSc 是系列软件和库的集合,三个根本组件 SLES、SNES 和 TS 本身基于BLAS、LAPACK、MPI 等库实现,同时为TAO、ADIC/ADIFOR、Matlab、ESI 等工具供给数据接口或互操作功能,并具有极好的可扩展性能。PETSc 为用户供给了丰富的 Krylov 子空间迭代方法和预条件子,并供给错误检测、性能统计和图形打印等功能。如今,越来越多的应用程序在 PETSc 环境上开发,并渐渐显示出 PETSc 在高效求解大规模数值模拟问题方面的优势和威力。PETSc 最版本为 petsc-2.2.1,PETSc 网站: :/ mcs.anl.gov/petsc。 目前,
10、PETSc 3 正在开发中。1.2 体系构造不同于其它微分/代数方程解法器,PETSc 为用户供给了一个通用的高层应用程序开发平台。基于PETSc 供给的大量对象和解法库,用户可以灵敏地开发自己的应用程序,还可任凭添加和完善某些功能,如为线性方程求解供给预条件子、为非线性问题的牛顿迭代求解供给雅可比矩阵、为很多数值应用软件和数学库供给接口等。图1 表示了 PETSc 在实现层次上的抽象,图2 具体列举了 PETSc 的根本数值部件。这里做简要说明。应用程序:用户在 PETSc 环境下基于 PETSc 对象和算法库编写的串行或并行应用程序。尽管PETSc 完全在 MPI 上实现,但PETSc 程
11、序具有固定的框架构造, 即有初始化、空间释放和运行完毕等环境运行语句。PDE 解法器:用户基于 PETSc 的三个根本算法库TS、SNES 和 SLES构建的偏微方程求解器。但它却不是 PETSc 的根本组件。10PDE 解法器TS (时间步进)KSP (Krylov 子空间方法)PC (预条件子)Draw矩阵向量索引集SNES (非线性方程解法器)SLES (线性方程解法器)TS:时间步进积分器,用于求解依靠时间或时间演化的 ODE 方程,或依靠时间的离散化后的 PDE 方程。对于非时间演化或稳态方程,PETSc 供给了伪时间步进积分器。TS 积分器最终依靠线性解法器 SLES 和非线性解法
12、器 SNES 来实现。PETSc 为 PVODE 库供给了接口。另外,TS 的用法格外简洁便利。SNES:非线性解法器,为大规模的非线性问题供给高效的非准确或拟牛顿迭代 解法。SNES 依靠于线性解法器SLES,并承受线性搜寻和信任域方法实现。SNES格外依靠于雅可比矩阵求解,PETSc 既支持用户供给的有限差分程序,同时又为用户供给了依靠 ADIC 等自动微分软件生成的微分程序接口。应 用 程 序SLES:线性解法器,它是 PETSc 的核心局部。PETSc 几乎供给了各种高效求解线性方程的解法器,既有串行求解也有并行求解,既有直接法求解也有迭代法求解。对于大规模的线性方程,PETSc 供给
13、了大量基于 Krylov 子空间方法和预条件子的各种成熟而有效的迭代方法,以及其它通用程序和用户程序的接口。BLASLAPACKMPI图 1:PETSc 实现的层次构造KSP:Krylov 子空间方法,广泛涉及 Richardson 方法,共扼梯度法CG 和BiCG,广义最小残差法GMRES,最小二乘 QR 分解LSQR等。PC:预条件子,包括雅可比矩阵,分块雅可比矩阵,SOR/SSOR 方法,不完全Cholesky 分解,不完全 LU 分解,可加性 Schwartz 方法,多重网格预条件子等。DRAW:应用程序的性能分析和结果显示。非线性解法器牛顿迭代法其它线搜寻信任域时间步法Euler方法
14、向后Euler方法拟时间步 其它Krylov 子空间方法GMRCGCGSBi-CG-StaTFQMRRichardsonChebyshev其它预条件子加法 Schwarz块JacobiJacobiILUICCLU其它矩阵压缩稀疏行(AIJ) 块压缩稀疏(BAIJ)块对角(BDiag)稠密其它向量索引集索引块索引跨度其它图 2:PETSc 的数值组件矩阵:PETSc 的根本数据对象。与向量对象不同,一个PETSc 的矩阵对象首先是在局部各个进程数据填充完成之后再对其进展全局聚拢,然后再由 PETSc 对象统一治理和实现矩阵的各种运算和操作。当问题的计算规模较大时,稀疏矩阵的填充将是影响程序性能的
15、关键因素。PETSc 还特地为用户供给了的单纯依靠向量来实现矩阵根本运算或无矩阵运算的接口。向量:PETSc 的根本数据对象。对于规章的正交网格,PETSc 自动对向量进展划分,并通过分布式存储向量即 DA 对象来治理。通过 DA 对象,用户可以简洁地实现向量的分发、聚拢、局部和全局之间的相互映像、边界点的通信等根本操作。DA 对象隐蔽了进程之间的通信,用户只需供给全局的向量构造和数值。但对于无构造网格,用户则可以通过索引集即IS 对象来实现向量的分发、聚拢、映像、边界点的通信等根本操作。索引集:它是一系列数据操作对象的集合,特地用来治理无构造网格向量的分发、聚拢、局部和全局之间的映像、边界点
16、的通信等根本操作。1.3 根本特色众所周知,用户通过PETSc 来开发应用程序往往具有相当的难度。一方面,它需要用户本身具有较高的数值计算方法方面的专业学问和并行计算方法方面的编程技巧。另一方面,总的来说PETSc 只是一个高级的应用程序开发环境,它为很多软件库和用户程序供给接口,用户只有充分生疏和利用现有的软件资源和数学库的根底上才有可能开发出高效的应用程序。尽管如此,PETSc 照旧由于其具有其它软件不行比较的优点吸引着越来越多的用户用它来开发应用程序。下面我们一一介绍和分析 PETSc 的这些优点或特色。计算力气:PETSc 为用户供给了丰富的算法和库资源。三个求解器SLES、SNES和
17、 TS构成了 PETSc 的核心组件。PETSc 不仅为中小规模线性方程组的求解供给了高效的直接方法,还为大规模稀疏线性方程组的迭代求解供给了多种 Krylov 子空间方法和多种预条件子。可兼容性:一方面,PETSc 具有很强的兼容力气,可在不同体系构造和不同操作系统环境高效运行。另一方面,PETSc 本身基于高性能的线性代数库BLAS 和 LAPACK和 MPI 消息传递环境实现,同时又充分吸取和融入了其它优秀软件的优点,如无构造网格区域分解和雅可比矩阵求解等方面的功能。可扩展性:PETSc 的可扩展性功能主要包括三个方面:计算性能的并行可扩展性、功能的可扩展性和计算力气的可扩展性。无论是在
18、计算时间还是在浮点性能方面,PETSc 供给的范例程序都有良好的线性加速比性能。面对对象的良好设计风格使得 PETSc 具有良好的功能扩展力气。作为一个高级应用程序开发平台,PETSc 特别适合于用来开发大型应用程序。抽象数据类型:PETSc 基于面对对象技术实现,具有全部面对对象软件的可移植性、可继承性和可扩展性等根本程序特征。PETSc 的向量、矩阵等根本数据对象完全承受抽象数据类型实现,尽量对用户屏蔽数据对象的区域分解和存储等细节。全部 PETSc 格点数据对象的划分、初始化和存取等根本操作都由 DA 对象来治理和相应 PETSc 库函数实现。用户基于 PETSc 对象可以灵敏开发其应用
19、程序。PETSc 对象和组件为构造大规模应用程序奠定一个良好的根底。输出力气:PETSc 具有良好的性能分析和图形输出功能。同时,PETSc 还具有高可用性,并具有很强的错误诊断力气。总之,PETSc 在无论是在计算力气、设计风格还是在可兼容性和可扩展性等方面都显示出极大的优越性。PETSc 不但为科学与工程计算领域的科学家和工程师供给了强大的大规模偏微方程求解工具,而且也为模型科学应用和高效算法设计供给了一个丰富的试验平台和计算环境。它使得算法的扩展和应用程序的共性化实现都更为简洁。另外,PETSc 的这种设计风格增加了代码的再利用性和编程的灵敏性,同时将并行性问题与算法的选择分别开来。1.
20、4 安装 PETSc这里,我们以PETSc 2.1.3为例,介绍如何在LINUX/UNIX环境下安装PETSc。在安装PETSc之前, 系统首先需要做如下配置:1) MPI的一种实现。对由厂家供给并已经安装了 MPI的并行机,推举使用厂家供给的 MPI实现, 由于通常比使用免费版本具有更好的性能。否则推举MPICH, 可在 :/ mcs.anl.gov/mpi/mpich免费下载获得。由于PETSc本身包含了MPI的一个简捷版本,因此只对串行运行PETSc感兴趣的用户除外。2) BLAS和LAPACK的一个拷贝。很多机器本身供给了BLAS或LAPACK等数学库。例如,DEC alpha供给了D
21、XML, 而IBM rs6000供给了ESSL版本。检查你使用的机器配置,假设这些库尚未在你的机器上安装,可在如下网站上获得ftp:/info. mcs.anl.gov/ pub/petsc/fblaslapack.tar.gz。建议你尽可能使用厂家供给的BLAS库。3) 可选软件包。PETSc供给了很多软件和库的接口,用户可以依据不同的应用需要安装相应的软件和库。然后,你就可以按以下步骤逐步安装 PETSc:1) 在 :/www-unix.mcs.anl.gov/petsc/petsc-2/download/index.html 上尽可能猎取最版本的 petsc.tar.gz,并用如下方式解
22、包gunzip -c petsc.tar.gz | tar xof 缺省时, 将自动创立 petsc-2.1.3 或其最版本名目。 PETSc 版本的补丁程序可通过 :/www-unix.mcs.anl.gov/petsc/petsc-patches.html 获得。2) 设置环境变量 PETSC_DIR 和 PETSC_ARCH,分别为 PETSc 主名目的路径和机器体系构造。例如setenv PETSC_DIR/home/username/petsc-2.1.3 setenv PETSC_ARCH rs60003) 编辑文件$PETSC_DIR/bmake/$PETSC_ARCH/pack
23、ages,以指定 MPI,LAPACK,BLAS,X-windows 等的路径及可选软件包。留意: 假设只安装单机运行的 PETSc 版本, 则不必安装 MPI,用户只需要在$PETSC_DIR/bmake/$PETSC_ARCH/packages 中设置MPI_LIB = $PETSC_DIR/lib/lib$BOPT/$PETSC_ARCH/libmpiuni.a MPI_INCLUDE = -I$PETSC_DIR/src/sys/src/mpiuniMPIRUN = $PETSC_DIR/src/sys/src/mpiuni/mpirun4) 或许还需编辑文件$PETSC_DIR/bm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PETSc 用户指南
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内