質問

書いてるソフトウェア双曲型偏微分方程式のc++.ほぼすべての表記についてはベクトルと行列のです。その上でさんありがとうございます。線形代数ソルバー.あり、ベクターおよびマトリクスのサイズを大きく変化する可能性がありかかっ1000することができますだけで解決する分散メモリーコンピューティングは、例えば.クラスターまたは類似の建築)。場合に住んでいての理想郷を、私た線形ソルバーをスケールものためのクラスター Gpuとmulticores.

を考えている場合は、データ構造を示すべきである変数かaccrosに進みました。ublasは、MTL4.両方のライブラリblasレベル3、MTL4を実装しsparseソルバーはるかに上ublas.いない実施の支援のためのマルチコアプロセッサな並列化のための分散メモリ計算に一方、開発MTL4に依存して唯一の努力の2つの開発(少なくともが分かっていたので、私には理由があるのublasは、ブ図書館があります。また、intel mkl図書館の例では結合構造とublas.私はbindデータやソフトウェアのデータ構造となるインパクトを開発し、維持します。

最後に、の問題をもたらしていました。何をご利用の経験のublasはmtl4、何をお勧めになりますか。

彼らは, mightydodol

役に立ちましたか?

解決

ご要求のように行くために ブ::uBLAS.確かに、良い展開uBLASきぼMTL4に関して高速になります。

その理由は存在する バインディング のための アトラス る共有メモリ並列化できる効率的な最適化のためのパソコン、ベンダー調整実装のように Intel Math Kernel Library または HP MLIB.

このバインディングでは、uBLASにもュアトラス/BLAS図書館やって算引き算など余計な計算はすべき速度です。場合のリンクに対して与えBLAS/アトラスになるので、ぼMTL4リンクに対する同ブラス/アトラスのコンパイラフラグ -DMTL_HAS_BLAS, がりを見るのMTL4なブラスに応じた 観測 (例参照 こちらの, では、 GotoBLAS 横MTL4).

とともに、速度は決して希望のご利用BLASライブラリ。ユーザビリティや支援がより重要だと考えます。して決定するかどうかMTLはuBLASは適しています。してしまいがちな方uBLASはそれの一環であげMTL4現在サポートするだけでなくBLAS を選択的に.またこの少付 比較科学的なC++のパッケージ 興味深い。

一つの大きなもの:ご要求事項(非常に大行列、あろうスキップの"統語砂糖"uBLASはMTL、"金属"CのインタフェースBLAS/LAPACKます。それは私だけでし...もう一つの利点があるのでより簡単に切り替える ScaLAPACK (分散メモリLAPACKすることにな使用できます。か:ハウスホー問題ないと感じている提案を呼び出すブラス図書館。

他のヒント

あなたがC ++でのベクトル、行列、および線形代数をプログラミングしている場合、私は固有値を見て思います:

http://eigen.tuxfamily.org/する

これはuBLAS(MTL4わからない)と、よりクリーンな構文よりも高速です。

新しいプロジェクトのために、それはブーストのuBlasから離れて滞在するために、おそらく最善です。 uBlasよくあるご質問でも2012年末以来、この警告があります:

Q:私は新しいプロジェクトのためuBLASを使用する必要がありますか?    ... uBLASの最後の主要な改善は2008年だったし、有意な変化は、2009年...パフォーマンス以来犯しませんでしたか?より高速な代替手段があります。最先端? uBLAS以上10歳で、C ++ 11からのすべての新しいものを逃した。

このリストには C++ ライブラリが 1 つありません。フレンズ

http://flens.sf.net

免責事項:はい、これは私の赤ちゃんです

  • ヘッダーのみです
  • シンプルで非パフォーマンスのジェネリック (つまり、templated) BLAS の C++ リファレンス実装。
  • 利用可能な場合は、最適化された BLAS 実装をバックエンドとして使用できます。この場合、BLAS を直接使用するのと同じです (更新すべきベンチマーク).
  • 使用できます BLAS 関数を呼び出す代わりにオーバーロードされた演算子.
  • これには、多数の LAPACK 関数の独自のスタンドアロンで汎用的な再実装が付属しています。このポートをポートと呼びます フレンス・ラパック.
  • FLENS-LAPACK は、Netlib の LAPACK とまったく同じ精度とパフォーマンスを備えています。私の経験では、(FLENS-)LAPACK+ATLAS または (FLENS-)LAPACK+OpenBLAS は、ACML または MKL と同じパフォーマンスを提供します。
  • FLENS は、線形代数式の評価における一時的なベクトル/行列の作成に関して異なるポリシーを持っています。FLENS ポリシーは次のとおりです。決して作成しないでください!!!。ただし、 特別なデバッグモード 「必要な場合」に一時的なものを作成することを許可します。この「必要な場合」のポリシーは、Eigen や Armadillo などの他のライブラリや Matlab のデフォルトです。

あなたはここで直接パフォーマンスの違いを見ることができます: http://www.osl.iu.edu/research/ MTL / MTL4 / DOC / performance.php3する

の両方がそのインタフェースの面で使用するための合理的なライブラリです、私はuBLASがBOOSTレビュープロセスを通じて得たので、それは必ずしも方法より堅牢だとは思いません。私は自明の副作用とuBLAS実装からの意図しない結果と悪夢の私のシェアを持っていた。

これはuBLASを言うことはありません悪いです、それは本当に良いことだが、私は、MTLのための劇的なパフォーマンスの違い、これらの日を考えると、それは間違いなくそれをもう少し危険なbecuaseは「唯一の2開発者だにもかかわらず、代わりにuBLASのそれを使用する価値だと思います「グループをサポートしています。

一日の終わりには、それがMTL4で行く、行列ライブラリーとスピードについてです。

私自身の経験から、MTL4はuBLASよりもはるかに高速であり、それは固有よりも高速です。

MTL4のパラレルバージョンがあります。ただ、 simunovaする

を見て
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top