問題タブ [boost-multi-array]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - blitz++、アルマジロ、boost::MultiArray の比較
次のコードを使用して、blitz++、armadillo、boost::MultiArray を比較しました (古い投稿から借用) 。
Windows、VS2010 では、結果は
Windows、Intel C++ では、結果は次のとおりです。
何か奇妙なもの:
intel C++ コンパイラで blitz++ をコンパイルするには、bzconfig.h というファイルが blitz/intel/ フォルダーに必要です。しかし、ありません。blitz/ms/bzconfig.h にあるものをコピーするだけです。最適でない構成になる可能性があります。Intel C++ コンパイラで blitz++ をコンパイルする方法を教えてください。マニュアルでは、bzconfig スクリプトを実行して適切な bzconfig.h を取得すると述べています。しかし、私はそれが何を意味するのか理解していません。
どうもありがとう!
私の結論のいくつかを追加します。
c++ - std::vector のブースト マルチアレイ
私はBoost(およびstackoverflowも)が初めてで、ベクトルのマルチアレイを使用したいと考えています。私はそのようにしました:
インターネット上では、int、doule などを使用するマルチアレイの例しか見つかりません。multiarray で std::vector を使用することは可能ですか? 3D マルチアレイを使用できることはわかっていますが、要素としてベクトルを使用したいと思います。
c++ - Eigen::Matrix vs. boost::multi_array vs. Eigen::Map
次のパフォーマンスを比較するためにかなり単純なタスクを実行しているときに、不可解な結果が得られます。
- 固有値::行列
- boost::multi_array
- boost::multi_array は、Eigen::Map を使用して Eigen::Matrix にマップされます
これは私のテスト コードの要約版です。完全版はhttp://pastebin.com/faZ7TvJGにあります。
結果は次のとおりです。
if ステートメントを使用して 1 つおきの要素をスキップすると、次の結果が得られます。
アセンブリを調べると、シーケンシャル アクセスの場合は合計がベクトル化されるため Eigen の方が高速ですが、生の boost::multi_array を使用する場合はそうではありません。
私の質問は次のとおりです。
- Eigen::Matrix がベクトル化されているのに、boost::multi_array がベクトル化されないのはなぜですか?
- Eigen にマップされた multi_array が「ネイティブ」Eigen データ構造よりも速いのはなぜですか?
コンパイルには、次を使用します。
回答ありがとうございます。
c++ - ブーストマルチアレイから最大/最小要素を取得する方法
次のような3つのインデックスのオブジェクトであるブーストマルチアレイの最大/最小要素を見つける簡単な方法を知りたいです:
c++ - ネストブースト::マルチアレイ?
私はいくつかの計算を行い、multi_array を返すテンプレート クラスを持っています。
単純な型でクラスをインスタンス化するとT=double
うまくいきます。今、私は " " でインスタンス化したいのですT=boost::multi_array<double, 1>
が、結果の型がboost::multi_array<double, 3>
.
定義multi_array<multi_array<T, N>, M>>
は明らかに結果にはなりませんmulti_array<T, N+M>
。これは、要素が M 次元の multi_array である N 次元の multi_array にすぎません ...
このような型を生成するというアイデアは、Boost マニュアルの次の言葉に動機付けられています。
MultiArray は再帰的に定義されます。コンテナー階層モデル MultiArray の各レベルのコンテナーも同様です。実際、中間
multi_array
レベルの「要素」は 型であることがわかりますsubarray
。
有効な次元を持つ型subarray
を生成するために使用できますか? たぶん、次の行に沿ってどういうわけか:multi_array
N+M
私は比較的クリーンな解決策 (長いハックではない) を探しています。これが multi_array インターフェイスで不可能な場合は、実装しようとしているものの設計を再考することをお勧めします。
c++ - boost::multi_array で、サブ配列のタイプはどれですか?
私が持っている場合
次のタイプはどれ?
関数インターフェイスでそれへの参照をどのように定義すればよいですか?
c++ - テンプレート化されたクラスで ``boost::array_view`` の typedef を作成する方法
次元にとらわれないテンプレート (3d と 4d の両方に役立つ) が必要です。ほとんどの操作は、最初の次元が削除された部分行列で実行されます。
だからここに私が持っていたいものがあります
array_type
このクラスによって管理される配列を定義する場所は、配列のインデックスに使用される型を定義します。この配列のスライスを 1 つ少ない次元で定義しindex_type
たいと思います。`stride_type
今のところ、エラーが発生します: