4

1、2、3...9次元のベクトルの配列で計算を行う必要があり、それらのベクトルの数は大幅に異なります(100から数百万まで)。もちろん、データ コンテナーを簡単に分解して並列アルゴリズムを有効にできれば素晴らしいことです。

blitz++ に出くわしました (コンパイルするのはほとんど不可能です) が、ベクトル データの配列を操作する他の高速なライブラリはありますか? boost::fusion は一見の価値がありますか? さらに、vtk の vtkDoubleArray は良さそうですが、vtk は可視化のみに使用される lib です。タプルの配列を持つことは魅力的なアイデアであることは認めざるを得ませんが、boost::fusion や vtkDoubleArray に関するベンチマークは見当たりませんでした。速度を念頭に置いて構築されていないのと同じように。何かご意見は?

よろしくお願いします、

マイティドドル

4

6 に答える 6

4

Eigenは、特定のコンパイラ (GCC 4、VC++ 2008) でのベクトルの自動ベクトル化をサポートします。

于 2009-09-29T11:48:01.420 に答える
1

線形代数の場合、完全なBLASパッケージのサブセットであるBoost uBLASを評価することをお勧めします。あなたが言及したように、実装しているアルゴリズムによっては、Boost Fusionも適切な場合があります。

視覚化ライブラリが必要ない場合は、リンクせずにVTKの非 GUI 部分を使用できると思います。vtkDoubleArrayVTK は、計算ではなく、レンダリングの効率化のために設計されていることに注意してください。結果をレンダリングしたくない場合は、最適化されたアルゴリズムを提供する科学パッケージの 1 つを使用することもできます。

(奇妙なことに) PBLASと呼ばれる BLAS の Parallel フレーバーがあります。これは Boost ラッピングでは利用できないと思うので、C インターフェイスを直接使用します。

于 2009-09-29T11:46:05.000 に答える
1

アレイで何をしたいのかわからない場合、本当に確固たるアドバイスをすることは困難です。配列の高性能操作が必要な場合は、Blitz++ がおそらく最善の策です。コンパイルに問題がある場合は、おそらくコンパイラまたはシステムを変更する必要があります。彼らはg ++をサポートしているので、ほぼすべての最新バージョンでうまくいくはずです.

私は Boost::fusion を使ったことはありませんが、マニュアルをざっと読んでみると、主な目的は単に異種のコンテナを作成することであることがわかります。私はそれがあなたが望むものだとは思わない。

私は GSL を使おうとしましたが、私がやりたいと思っていたことに対して絶望的に扱いにくいと感じました。

于 2009-09-29T11:56:27.550 に答える
0

Blitz++ を使用してみます。非常に優れたパフォーマンスが得られます。アルマジロも非常に効率的です。

于 2010-08-02T20:33:43.697 に答える
0

私は専門家ではありませんが、MATLAB APIの使用を検討してください。

于 2009-09-29T11:07:16.087 に答える
0

ベクトルまたは行列で操作するためのGNU Scientific Libraryがあります。

于 2009-09-29T11:29:31.783 に答える