私は C++ で数学の博士号を取得するための科学的なアプリケーションを作成しています。これは、いくつかの重い線形代数 (主に BLAS レベル 3 ルーチン) に基づいています。使用される行列のサイズはかなり異なります。理想的には、10000 オーダー以上の非常に大きな行列を処理できるようにしたいと考えています。これまでのところ、インテル® MKL を使用しており、マルチスレッドで、8 コアにうまくスケーリングできます。私のアルゴリズムは正しい結果を生成しますが、倍精度演算では、高べき乗の結果として誤差が蓄積するため、非常に不安定です。さらに、私は大規模なスーパーコンピューター クラスターにアクセスでき、私のアルゴリズムは複数のノード間で簡単にスケーリングできるため、MPI を使用して数百のノード間でアプリケーションをスケーリングしたいと考えています。
私の目標は、次のようなテンプレート化された BLAS ライブラリを見つけることです。
複数精度演算のサポート、マルチスレッドのサポート、MPI のサポート
これまでの私の調査結果: MTL4 - Matrix Template ライブラリ 4 は上記のすべてを実行しているようですが、オープン ソース版は 1 つのコアでしか実行されず、スーパーコンピューティング版は非常に高価です。
Eigen - マルチコアをサポートしていないようですか? MKLと連携すればマルチコアやMPIに対応しますか?
アルマジロ - 上記のすべてを行いますか?
洞察や推奨事項をいただければ幸いです
敬具、
マリア