問題タブ [matrix-multiplication]
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.
python - numpy: 大きな行列の xT*x を計算します
では、numpy
を計算する最も効率的な方法は何ですか。 は大きな (200,000 x 1000) 密行列で、は転置演算子ですか?x.T * x
x
float32
.T
誤解を避けるために、結果は 1000 x 1000 です。
編集:私の最初の質問で、私はそれnp.dot(x.T, x)
が何時間もかかっていると述べました. NaNs
マトリックスに潜入したことが判明し、何らかの理由でのパフォーマンスを完全に殺していましたnp.dot
(理由についての洞察はありますか?) これは現在解決されていますが、元の質問は残っています.
cuda - ブロックごとのスレッド、グリッドごとのブロックを決定するCUDA
私はCUDAパラダイムに不慣れです。私の質問は、ブロックあたりのスレッド数とグリッドあたりのブロック数を決定することです。少しの芸術と試練がこれに影響を及ぼしますか?私が見つけたのは、多くの例がこれらのもののために選択された一見任意の数を持っているということです。
私は、任意のサイズの行列を乗算のメソッドに渡すことができるという問題を検討しています。そのため、Cの各要素(C = A * Bのように)は単一のスレッドによって計算されます。この場合、スレッド/ブロック、ブロック/グリッドをどのように決定しますか?
algorithm - MATLAB での非常に大きな行列の効率的な乗算
D が大きいため、単純に対角 D 行 D 列の行列を作成するのに十分なメモリがありません。「メモリ不足」エラーが発生し続けます。
最初の乗算で M x D x D 演算を実行する代わりに、M x D 演算を実行しますが、それでもコードの実行には時間がかかります。
誰でも乗算を実行するためのより効果的な方法を見つけることができますA'*B*A
か? これが私がこれまでに試みたことです:
algorithm - 最良の行列乗算アルゴリズムは何ですか?
最良の行列乗算アルゴリズムは何ですか? 私にとっての「最高」とは?これは、今日のマシンで最速かつ準備ができていることを意味します。
可能であれば、疑似コードへのリンクを提供してください。
c++ - Octaveライブラリを使用したC++の(maxmin)のようなスパース行列の乗算
私はmaxmin関数を実装しています。これは行列の乗算のように機能しますが、積を合計する代わりに、点ごとに2つの数値の間で最大最小値を取得します。ナイーブな実装の例は次のとおりです。
Octave oct-fileとしてコーディングしているので、oct.hデータ構造を使用する必要があります。問題は、スパースバージョンを実装したいということですが、通常、この例のように行または列の次の非ゼロ要素への参照が必要です(4.3アルゴリズムを参照): http://www.eecs.harvard .edu /〜ellard / Q-97 / HTML / root / node20.html
そこでrow_p->nextを実行すると、行の次の非ゼロ要素が得られました(列についても同じです)。オクターブのSparseMatrixクラスで同じことを行う方法はありますか?または、maxmin関数に採用できるスパース行列の乗算を実装する別の方法はありますか?
sparse-matrix - OpenFOAM、PETSc またはその他の疎行列乗算のソース コード
OpenFOAM、PETSc、または同様のものによって実現される行列乗算のソースコードをどこで見つけることができるか教えてもらえますか? それは自明なアルゴリズムではありえません。OpenFOAM と PETSc のホームページを見つけましたが、doc には乗算メソッドとソース コードが見つかりません。
iphone - スムーズスクロール/慣性スクロール/モメンタムスクロール
翻訳用のマトリックスによって制御される Android の OpenGL ES ビューがあります。Google マップ アプリや iPhone で見られるように、勢いのあるスクロールのヒントを得る方法を見つけようとしています。ありがとう。
c# - C#でのより高速な行列乗算
行列を含む小さなc#プロジェクトがあります。大量のデータをn個の長さのチャンクに分割し、チャックをベクトルとして扱い、ファンデルモンド**行列を乗算することで処理しています。問題は、条件に応じて、チャックのサイズと対応するファンデルモンド**行列が変化する可能性があることです。私は読みやすい一般的な解決策を持っていますが、遅すぎます:
これは、私のi5 U470@1.33GHzで毎秒約1/4メガバイトを処理できます。行列の乗算を手動でインライン化することで、これを高速化できます。
これは、1秒間に約1メガを処理できます。
(「mod」は、私のお気に入りの既約多項式を法としてGF(2 ^ 8)に対して演算を実行していることに注意してください。)
私はこれがはるかに速くなることを知っています:結局のところ、ファンデルモンド**行列はほとんどゼロです。行列を取得して、ベクトルに指定された行列を効果的に乗算する最適化されたメソッドを返すことができるルーチンを作成するか、ルーチンを見つけることができるはずですが、より高速です。次に、このルーチンに5x5のファンデルモンド行列(単位行列)を与えると、実行する演算がなく、元のデータがコピーされるだけです。
**注意:私が「ファンデルモンド」という用語を使用しているのは、実際には、ファンデルモンド行列のいくつかの行が追加された単位行列を意味します(コメントを参照)。この行列は、すべてゼロであるため素晴らしいものです。また、(選択した)行を十分に削除して正方形にすると、可逆行列になります。そしてもちろん、これと同じルーチンを使用して、これらの逆行列のいずれかを最適化された一連の命令に変換したいと思います。
この行列の乗算を高速化するにはどうすればよいですか?
ありがとう!
(ファンデルモンド行列の間違いを修正するために編集)
algorithm - 行列-行列乗算/行列-ベクトル乗算のアルゴリズムの種類は何ですか
行列-行列の乗算と行列-ベクトルの乗算のアルゴリズムの種類は何ですか。
キャノンのアルゴリズムは、行列-行列乗算のそのようなアルゴリズムの1つです。他のアルゴリズムはありますか。
どのアルゴリズムが良いと思いますか?
performance - トリプルforループによるOpenMP並列化行列の乗算(パフォーマンスの問題)
私はOpenMPを使用した行列乗算のプログラムを作成しています。これは、キャッシュの利便性のために、従来のA x B行x列ではなく、乗算A x B(転置)行X行を実装して、キャッシュ効率を向上させます。これを行うと、私にとっては非論理的であるという興味深い事実に直面しました。このコードでexternループを並列化すると、OpenMPディレクティブを最も内側のループに配置した場合よりもプログラムが遅くなります。私のコンピューターでは、時間は10.9秒対8.1秒です。