PETSc和Trilinos之间的主要区别是什么?


24

据我所知,美国能源部的两个大型通用计算科学软件框架是 PETScTrilinos。乍一看,它们看起来很相似,只是语言上的差异(C与C ++)不同。这两个框架之间的主要区别是什么?应该选择哪些因素来影响一个因素?(忽略机构偏见和现有基础结构。)


1
不久前,CFD董事会进行了一些过时的讨论(从2009年开始)。也许要问的更好的问题是:从那时起,这两个包装的设计是否发生了重大变化?
2011年

艾哈迈德(Ahmed),该讨论主要集中在预处理器上。我希望有比讨论迭代求解器更广泛的观点。另外,由于在scicomp.SE上有很多关于PETSc的讨论,我认为Trilinos也应该有一些专门的帖子,这似乎是潜在的Trilinos用户应该问的第一个问题。我对Trilinos或PETSc不太了解,所以我认为答案也将帮助我学习一些东西。
Geoff Oxberry

Answers:


19

在文化,编码风格和功能上存在巨大差异。根本的区别可能是Trilinos尝试提供解决FEM问题的环境,而PETSc提供解决稀疏线性代数问题的环境。

为什么这么重要?

  • Trilinos将提供与FEM求解器的各个部分有关的大量软件包。有时这些程序包可以一起工作,有时却不能。甚至基本组件都在其自己的程序包和高级C ++工具中
  • PETSC提供了少量可以构建的核心例程,但将FEM求解器留给了第三方软件包。因此,它不仅与FEM关联,而且与更大的社区关联。例如,即使本征求解器也是第三方,可以说它是线性代数的主要部分。
  • 最重要的是,Trilinos专注于在自己的程序包中很好地工作,并且PETSc具有调用许多中间件程序包的接口(因此,我经常听到它被称为“轻量级”的消息,但我不会这么说)

恕我直言,您应该使用真正取决于问题。请分享更多详细信息,以便我们回答该问题。


我没有特定的问题。我感兴趣的是得到的经验与那些大包的一个解决偏微分方程,并希望得到优劣的想法,这样我可以做出更明智的决定,关于哪一个投资我的时间英寸
杰夫Oxberry

11

如果您想听取各种软件包的技术指导意见,并从普通HPC用户的角度出发提问,那么Brock Palen和Jeff Squyres的RCE播客是一个很好的资源。他们在PETScTrilinos上都有插曲,这很清楚。

aterrel在他的描述中是正确的-PETSc是(相对)小型,集成的,经过深思熟虑的通用线性和一些非线性求解器的程序包,然后可以在求解器框架中使用它。Trilinos是软件包的集合,集成在不断发展,主要是作为该求解器框架,其中包括ODE求解器,网格化软件包等。


7

让我补充一下aterrel的好话:Trilinos确实是一大堆(Sandia)的东西,而Petsc是一个更专注的库。如果您想进行比较,则应将PETSc的稀疏求解器支持与Trilinos的ePetra / ML / etc稀疏求解器生态系统进行比较,两者的功能相似。而且,PETSc支持结构化网格,而Sandia历来明确是非结构化(FEM)公司,因此Trilinos对结构化网格AFAIK几乎没有支持。而且Trilinos具有PETSc不像随机PDE支持那样具有的功能。


3
很好地补充了Trillinos具备PETSc所没有的功能:自动微分,负载平衡,电弧连续方法,优化程序包。但是所有这些都已由第三方软件包(其中一些来自Trilinos)内置到PETSc中,并且可以使用PETSc --download-foo configure进行添加。
aterrel 2011年

6

作为花了两年时间处理这两个软件包的人,我的观点是这两个软件包实际上并没有什么不同。的确,他们使用不同的语言,但是使用方式非常相似(两者都是面向对象的,除了使用类之外,Trilinos几乎没有其他使用C ++的方法)。两者都几乎支持您希望使用线性代数进行的所有操作(通过子软件包或它们在运行中下载的东西,从用户角度看,这没有什么区别)。最后,两者都有很多更晦涩难懂的子包,并且可能使用不广泛(例如PETSc的网状界面“筛子”,Trilinos中的自动区分等)。

对我而言,Trilinos的吸引力有两个:-Trilinos中晦涩的子包装的数量要大得多;如果我需要X方向的东西,我将在Trilinos中找到它,它将与我的其余代码一起使用。-Trilinos在发展策略上更为保守。PETSc一直在重命名事物,每个版本都要求用户跟上重命名的函数,不同的库等。


我认为您只使用了较旧的界面,因为许多较新的界面广泛使用模板。
aterrel 2011年

基本上是这样。我想您评论了“除类之外C ++的其他用途”声明。我的意思是,在大多数地方它不使用RTTI,异常,多重继承等。如果您了解C和一些面向对象的知识,则相对容易理解。
Wolfgang Bangerth,2011年

2

PETSc可以很容易地与Fortran一起使用,并且文档/示例相当好。

在我看来,Trilinos令人困惑(包括其所有子包和命名方案),并且对Fortran的支持参差不齐(至少当我几年前查看时)。

有两种与Fortran中的Trilinos进行交互的方法:(1)将原始数据传递到C ++包装器中,从而使您的[此类包装器存在多个包]都对Trilinos包进行了所有调用;或(2)使用了新的ForTrilinos接口,练习Fortran 2003的面向对象功能。ForTrilinos所需的大多数功能在大多数编译器中都可用。这些功能的编译器实现虽然有错误,但仍在迅速改进。ForTrilinos当前使用IBM和NAG编译器进行构建。Cray,Intel和Portland Group编译器的当前版本或即将发布的版本都名义上支持对错误修复的必要功能。即将发布的GCC 4.7.0版本将具有所有必需的功能,但只有一项,因此对编译器的广泛支持在不久的将来不会太久。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.