私の知る限り、米国エネルギー省の計算科学ソフトウェアフレームワークの2つの大きなジェネリックは、 PETScとTrilinosです。言語の違い(CとC ++)を超えて、一見似ているように見えます。2つのフレームワークの主な違いは何ですか?また、どちらを選択するのに影響する要因は何ですか?(制度的バイアスと既存のインフラストラクチャを無視します。)
私の知る限り、米国エネルギー省の計算科学ソフトウェアフレームワークの2つの大きなジェネリックは、 PETScとTrilinosです。言語の違い(CとC ++)を超えて、一見似ているように見えます。2つのフレームワークの主な違いは何ですか?また、どちらを選択するのに影響する要因は何ですか?(制度的バイアスと既存のインフラストラクチャを無視します。)
回答:
文化、コーディングスタイル、機能には大きな違いがあります。おそらく根本的な違いは、TrilinosはFEM問題を解決するための環境を提供しようとし、PETScはスパース線形代数問題を解決するための環境を提供することです。
なぜそれが重要なのですか?
あなたが本当に使うべきIMHOは、問題次第です。その質問に答えるために、詳細を共有してください。
さまざまなパッケージのテクニカルリードから聞きたい場合、通常のHPCユーザーの観点から質問する場合は、Brock PalenとJeff SquyresのRCEポッドキャストが優れたリソースです。彼らは非常に明確なPETScとTrilinosに関するエピソードを持っています。
aterrelは彼の説明で正しいです-PETScは、ソルバーフレームワークで使用できる汎用線形およびいくつかの非線形ソルバーの(比較的)統合された、よく考えられたパッケージです。Trilinosは、そのソルバーフレームワークであることを主な目的とする、進化している統合を備えたパッケージのコレクションであり、ODEソルバー、メッシュパッケージなどのようなものが含まれています。
Aterrelの良いコメントに加えて、Trilinosは本当に(Sandia)のものの大きな袋であり、Petscはより焦点を絞ったライブラリーであるということを付け加えておきます。比較したい場合は、PETScのスパースソルバーサポートとTrilinosのePetra / ML / etcスパースソルバーエコシステムを比較する必要があります。また、PETScは構造化グリッドをサポートし、Sandiaは歴史的に明示的に非構造化(FEM)ハウスであったため、Trilinosは構造化グリッドをほとんどまたはまったくサポートしていません。また、Trilinosには、PETScが確率的PDEサポートのように触れない機能があります。
両方で数年を費やした人として、私の見解では、両方のパッケージは実際にはそれほど違いはありません。確かに、異なる言語を使用しますが、非常によく似た方法で使用します(両方ともオブジェクト指向であり、Trilinosはクラスを使用する以外にC ++をほとんど使用しません)。どちらも、線形代数を使用して実行することを実質的にすべてサポートします(サブパッケージまたはその場でダウンロードするものを使用しますが、ユーザーの観点からは違いはありません)。最後に、どちらもかなり多くのあいまいで、おそらくあまり広く使用されていないサブパッケージ(たとえば、PETScのメッシュインターフェイス「ふるい」、Trilinosでの自動差別化など)を持っています。
私にとって、Trilinosの魅力は2つあります。-Trilinosのあいまいなサブパッケージの数は非常に多いです。X方向に何かが必要になった場合は、Trilinosでそれを見つけ、残りのコードで動作します。-Trilinosは、開発戦略においてはるかに保守的です。PETScは常に物の名前を変更し、すべてのリリースでは、ユーザーが名前の変更された関数、異なるライブラリなどに追いつくことを必要とします
PETScはFortranで非常に簡単に使用でき、ドキュメント/例はかなり優れています。
私にとってTrilinosは混乱しそうで(そのすべてのサブパッケージと命名体系も)、Fortranのサポートはむらがありました(少なくとも数年前に見たときは)。
FortranからTrilinosと対話するには、2つの方法があります。(1)Trilinosパッケージのすべての呼び出しを行うC ++ラッパーに生データを渡す[このようなラッパーは複数のパッケージに存在する]、または(2)新しいForTrilinosインターフェイスFortran 2003のオブジェクト指向機能を実行します。ForTrilinosに必要な機能のほとんどは、ほとんどのコンパイラで使用できます。これらの機能のコンパイラー実装はバグがありますが、急速に改善されています。ForTrilinosは現在、IBMおよびNAGコンパイラでビルドされています。Cray、Intel、およびPortland Groupコンパイラの現在または近い将来のリリースはすべて、バグ修正を法とする必要な機能をすべてサポートしています。今後のGCC 4.7.0リリースでは、必要な機能はすべて1つになりますが、今後、幅広いコンパイラサポートはそれほど遠くありません。