常用数学函数库简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国外数学库
1.1 可扩展可移植科学计算工具箱(PETSc)
PETSc (Portable, Extensible Toolkit for Scientific Computation) 是由Argonne 国家实验室开发的可移植可扩展科学计算工具箱,主要用于高性能求解偏微分方程组及相关问题[2] 。
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-2.2.1,PETSc 网站:/petsc ;。
目前,PETSc 3 正在开发中。
1.2 大型稀疏线性方程组并行迭代求解库(AZTEC)
AZTEC ( A Massively Parallel Iterative Solver Library for Solving Sparse Linear Systems) 是由Sandia 国家实验室开发的,主要用于并行迭代求解大型(PDE 问题)稀疏线性方程组
[3] 。
AZETEC 是一个求解(PDE 问题)稀疏线性方程组的并行迭代解法库,它为用户提供了许多Krylov 子空间迭代方法(如CG、GMRES 、BiCGSTAB )和预条件子(如多项式预条件子、LU 分解和不完全LU 分解)。
AZETEC 具有很强的可移植性,可在DEC、SGI、SUN、Gray T3E 、Intel TeraFlop 、Intel Paragon 、IBM SP2 等工作站系统和向量机上运行。
AZETEC 最新版本为azetec-2.1 , AZETEC 网站:
/ ;CRF/aztec1.html 。
1.3 高级最优化工具箱(TAO)
TAO (Toolkit for Advanced Optimization) 是Argonne 国家实验室开发的高级最优化工具箱,主要用于在高性能机器上求解大规模最优化问题[4] 。
TAO 的所有消息传递通信均采用MPI 标准实现。
TAO 用C/C++ 语言开发,遵循面向对象设计的基本特征,使用简单方便。
TAO 支持Fortran 77/90 、C 和C++编写的串行和并行代码,不过TAO 推荐使用C 和C++,某些C/C++ 的功能使用Fortran 很难实现。
运行TAO 需要PETSc 对象的支持,用户可以基于TAO 和PETSc 对象灵活开发应用程序。
TAO 是系列软件和库的集合,其各个解法器本身基于BLAS, MPI, PETSc 等库实现。
PETSc 为TAO 提供了丰富的线性代数支撑,用来定义矩阵、向量等线性代数对象和操作。
TAO 是一个正在不断完善的软件包。
虽然 TAO 求解的问题广泛涉及无约束最优化、限界约束最优化、非线性最小二乘法、二次规划、非线性约束优化、半正定规划等问题,
但是TAO 目前支持无约束最优化、限界约束最优化、非线性组合优化问题,其他的解法器也正在完善中。
TAO 最新版本为 tao-1.6,其中提供对包括并行无约束最优化和约束限界最优化问题及非线性组合优化问题的支持。
它需要MPI 和PETSc2.1.3 或更新版本的支持。
TAO 网站:/tao ;。
1.4 非线性微分/代数方程求解器套装(SUNDIALS)SUNDIALS (Suite of Nonlinear and Differential/Algebraic Equation Solvers) 由Lawrence Livemore 国家实验室开发,用于求解大规模非线性微分/代数方程[5] 。
SUNDIALS 基于标准C 语言开发,由几个解法器组成:串行/并行常微分方程初值问题求解器(CVODE/PVODE),非线性代数方程求解器(KINSOL )和微分代数方程初值问题求解器(IDA )。
CVODES 是CVODE 的扩展,它采用正向积分和反向积分方法可以对模式
输出结果做参数敏感性分析。
SUNDIALS 最近更新日期为 27/08/2002 , SUNDIALS 网站:http://www.llnl. ;gov/CASC/sundials 。
1.5 快速傅里叶变换(FFTW)
FFTW ( the Faster Fourier Transform in the West) 是一个快速离散傅里叶变换的标准C 语言程序集,由MIT 的Matteo Frigo 和Steven G.Johnson 开发[6] 。
FFTW 用于快速计算复型、实型以及奇或偶对称实型离散傅里叶变换。
FFTW 以O (n log n )的计算代价处理任意维、任意规模数据的离散傅里叶变换。
FFTW 支持SSE 、SSE2 、3Dnow 和Altive 指令集。
FFTW (版本3.0.1 )支持共享存储环境下的并行和多线程离散傅里叶变换。
FFTW 最新版本为fftw-3.0.1,FFTW 网站: ;。
1.6 线性代数库(LAPACK)
LAPACK (Linear Algebra PACKage) 是Oak Ridge 国家实验室、加州大学Davis 分校和Illinois 大学等联合开发的线性代数函数库,用于在不同高性能计算环境上高效求解数值线性代数问题[7] 。
LAPACK 采用标准Fortran 77 编写。
LAPACK 支持实型和复型数据类型,完全支持单精度和双精度计算。
LAPACK 可以在向量机,高性能超标量工作站,和共享存储多处理机上高效运行,也可以在各种类型的单机(PC, 工作站, 大型机)上获得满意的结果。
LAPACK 最新版本为lapack-3.0,
LAPACK 网站:/lapack/ ;index.html 。
1.7 可扩展线性代数库(ScaLAPACK)
ScaLAPACK (Scalable LAPACK) 是美国能源部DOE2000 支持开发的20 多个ACTS 工具箱之一,由Oak Ridge 国家实验室、加州大学Berkeley 分校和Illinois 大学等联合开发,主要是在分布式存储环境运行的线性代数库[8]。
ScaLAPACK 是LAPACK 的并行扩展。
ScaLAPACK 被设计为具有高效率、可移植性、可扩展性、可靠性、灵活性和易用性,它可以在任何有BLAS 和BLACS 的机器上运行,同时支持支持PVM 和MPI 。
ScaLAPACK 现在使用基于SPMD 模型的Fortran 77 编程,采用显式消息传递进行处理器间通信。
ScaLAPACK 可用于求解线性方程系统、线性最小二乘问题和奇异值问题。
与LAPACK 类似,ScaLAPACK 基于块划分算法实现。
ScaLAPACK 的基本组成部分包括PBLAS (并行BLAS )和BLACS 。
BLACS 用于进程间的通信。
ScaLAPACK 包括了三类函数:1. 驱动函数(driver routines ):用于求解标准类型的问题,每个驱动函数调用一系列计算函数;2. 计算函数(computational routines ):用于执行特定的计算任务,作为整体,计算函数比驱动函数可以承担的任务范围更广;3. 辅助函数(auxiliary routines ):执行固定的子任务或一般的底层计算,很多辅助函数可以被数值分析者和软件开发者使用。
ScaLAPACK 最新版本为scalapack-1.7 , ScaLAPACK 网站:
lib. ;org/scalapack/ calapack_home.html 。
1.8 无结构网格上的区域分解(DOUG)
DOUG (Domain decomposition On Unstructured Grids) 是由Bath 大学数学系
M. J. Hagger 和L. Stals 开发的并行迭代解法器(黑箱),主要用于并行求解有限元方法离散的椭圆型偏微分方程组[9]。
DOUG 用FORTRAN 77 语言开发,其所有消息传递通信均采用MPI 标准实现。
DOUG 提供了一些具有鲁棒性的区域分解预条件子,从某种意义上说DOUG 是标准加法Schwarz 重叠子区域算法的一种软件实现。
DOUG 求解能力是任意无结构的,作为DOUG 的输入仅需要从网格生成器的基本输出及有限元单元描述信息。
预条件子可用于多种迭代法之中,目前仅实现了CG 和BiCGSTAB 两种迭代方法;但软件给其它的迭代方法留有接口。
DOUG 具有较强的可移植性和可操作性,它可以在任何支持MPI 消息传递环境的机器上运行,仅需要用户提供很少的指令输入,DOUG 便可以自动地进行如下操作:求解来自高度无结构网格问题;将问题划分为子问题;创建任意需要的粗网格问题(目前版本仅对二维情形);提供用户可访问程序来利用区域分解预条件子实现大多数迭代方法。
目前,DOUG 最新版本为v-1.9.8 , DOUG 网站:
http://www.maths.bath. ;/~ parsoft/doug。
1.9 并行特征值问题求解器(PARPACK)
ARPACK (Arnoldi PACKage) 由Rice 大学开发用来求解大规模特征值问题的子程序集[10]。
它支持Fortran 77 语言编写的源代码。
ARPACK 基于Arnoldi(IRAM: Implicitly Restarted Arnoldi Method )算法实现。
这既有效降低了问题求解的计算和存储需求,同时又非常适用于求解大型稀疏或结构化矩阵的特征问题。
PARPACK 是ARPACK 的并行扩展,适合于在分布式存储消息传递系统上运行。
目前PARPACK 支持BLACS 和MPI 两种消息传递方式。
PARPACK 为用户提供了高效的单程序多数据(SPMD )模板。
PARPACK 具有很强的可移植性和可扩展性,通过 BLACS 和 MPI 实现可以很方便地移植到分布式存储计算环境上运行。
目前,ARPACK 最新版本为arpack-2.1 , ARPACK 网站:
http://www.caam.rice. ;edu/software/ARPACK/index.html 。
国内数学库
2.1并行特征值求解器(PSEPS)
PSEPS (Parallel Symmetric Eigenvalue Package of Solver) 是由中国科学院计算机网络
信息中心超级计算中心(SCCAS)独立开发的并行特征值求解器,主要用于高性能求解对称矩阵特征值及其相关问题[1]。
PSEPS 是一个求解特征值的并行求解器,它具有以下功能:1)稀疏对称矩阵特征值问题并行求解;2)带状矩阵特征值问题并行求解;3)稠密矩阵特征值问题的并行求解;4)其它特殊情形的特征值求解。
PSEPS 具有友好用户界面、精度高、可移植好和稳定性强等特点。
PSEPS 的开发充分考虑考虑矩阵结构和系统体系结构方面特点,采用混合程序设计模型进行开发。
PSEPS 网站:/sce/pseps ;。
2.2 自动微分转换系统(DFT)
DFT (Differentiation Transforming System) 系统是中国科学院大气物理研究所大气科学和地球流体力学国家重点实验室(LASG)和中国科学院计算数学与科学工程计算研究所科学与工程计算国家重点实验室(LSEC)联合研制开发,目前主要用于求解串行切线性模式
[11]。
DFT 系统在YACC 环境下实现,完全支持Fortran 77 。
DFT 系统采取结构化的微分代码实现,自动生成微分测试代码,并具有很强数据相关分析和语句级微分代码优化能力。
基于DFT 系统得到的切线性模式在变分资料同化、参数的敏感性分析、非线性最优化
以及数值模式的可预测性分析等问题中有着广泛的应用。
DFT 系统最新版本dft-3.0,DFT 系统网站:/sce/autodiff。
2.3 自动伴随生成器系统(ADG)
ADG (Adjoint Code Generator) 由中国科学院大气物理研究所大气科学和地球流体力学
国家重点实验室(LASG )研制开发,目前主要用于求解串行伴随模式代码[1]。
ADG 系统基于最小程序行为分解方法产生的伴随模式代码无论是在浮点计算量还是在存储开
销方面均具有深度复杂性的特点[12] 。
ADG 系统在YACC 环境下实现,完全支持Fortran 77 。
ADG 系统采取结构化的微分代码实现,自动生成伴随测试代码,并具有很强数据相关分析和语句级微分代码优化能力。
基于 ADG 系统得到的伴随模式在变分资料同化、系统参数辨识、参数敏感性分析、非线性最优化以及数值模式的可预测性分析等问题中有着广泛的应用。
ADG 系统最新版本adg-1.0, ADG 系统网站:/sce/autodiff ;。
2.4 并行多维傅里叶软件包(PMDFFT)
PMDFFT(Parallel Multi-dimensional Fast Fourier Transformation) 是由中国科学院计算机网络信息中心超级计算中心(SCCAS )开发的并行多维快速傅里叶软件包,用于并行求解离散傅里叶变换及其相关问题[13] 。
PMDFFT 基于FFTW 开发。
因此,在数据处理方面PMDFFT 具有复型、实型以及奇或偶对称实型离散傅里叶变换功能,同时以O(n log n )的计算代价处理任意维、任意规模数据的离散傅里叶变换。
PMDFFT 支持MPI 分布式存储环境下的并行离散傅里叶变换。
PMDFFT 具有容错处理、本地块矩阵转置、动态存储管理、多对多通信模式和友好用户界面等程序特征。
PMDFFT 网站:/sce/pmdfft ;。