問題タブ [dot-product]

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.

0 投票する
3 に答える
810 参照

matlab - 法線と点の配列の間のドット積の合計をベクトル化する方法

次の式を評価する必要があります(疑似数学表記で):

∑<sub>ipi⋅<b>n

ここpで、 は 3 要素ベクトルの行列で、 はn3 要素ベクトルです。次のように for ループを使用してこれを行うことができますが、これをベクトル化する方法がわかりません。

0 投票する
1 に答える
305 参照

c# - 12k float 要素の後で Opencl カーネル バッファがリークする

私は C++ で opencl 用の dotproduct カーネルを作成しましたが、ベクトル長 4096 で動作しています (12k 要素を試しても問題なく動作しています) が、ベクトル長を 16k 要素に増やすと、結果は無限大になり、小さな浮動小数点数を超えることはありません。番号。明らかにリークなどがありますが、n<16k 要素では問題なく動作します。16k 要素と 4 バイトはそれぞれ 64kB になり、3 つのバッファの合計は 192kB になり、これは GPU のメモリの 1/1000 にもなりません。ホスト コード (C#) の同じリダクション アルゴリズムと結果を比較すると、ホストの結果は予想どおり小さいです。無限大を構築するための精度エラーもありません(特定の有限値に制限されることさえあります)。

DLL 呼び出しを介して C# から C++ に渡されるカーネル (Ln= ローカル ワーク サイズ、n= グローバル ワーク サイズ) は次のとおりです。

C++ Opencl バッファは次のとおりです。

バッファの送信方法は次のとおりです。

実行:

結果バッファの取得方法は次のとおりです(すべての要素が結果であり、未完成であることはわかっています):

質問: C++ Opencl に飛び込む前に行う必要がある設定はありますか? これは、Java/Aparapi/Jocl では問題ではありませんでした。

Khronos のサイトからの Opencl 1.2 ヘッダーと、AMD Opencl.lib + Opencl.dll を使用すると、役立つ場合があります (ターゲット デバイスは HD7870)。

0 投票する
4 に答える
1364 参照

java - 点が 2 つの点の間にあるかどうかを確認する

私は自分の数学が少しさびていることを認識しました..かどうかを確認したいPoint C is between Point A and Point B. C は、A と B の線分上にある場合とない場合があります。3 つのケースが考えられ、すべてを特定する必要があります。

  • C は A と B の間にある

    /li>
  • C は A と B の前にある

    /li>
  • C は A と B の後ろにある

    /li>

最後の 2 点の「スケッチ」は三角形である必要があります。

ドット積を使用して、C が A と B の間にあるかどうかを確認しました。

C が A と B の後ろにあるかどうかを確認するには、次を使用します。

しかし、C が A と B の前にあるかどうかを識別する方法は?

0 投票する
1 に答える
2102 参照

numpy - カスタム内積による Numpy 行列の乗算

デフォルトの行列乗算は次のように計算されます。

ドット積の代わりにカスタム式を使用して取得しようとしています

numpyでこれを行う効率的な方法はありますか?

0 投票する
2 に答える
3889 参照

cuda - CUDA ジェネリック ドット積

私は C と CUDA の両方が初めてで、内積関数を書いていましたが、正しい結果が得られません。親切な魂が私を見てくれますか?

また、2つ質問がありますが、

  1. dot() が正しく機能しない理由と、
  2. 57 行目で、product[index] ではなく product[threadIdx.x] になっているのはなぜですか? 書けないかな

    製品[インデックス] = a[インデックス] * b[インデックス]; ... if(index==0) {...} そして、このようにゼロ番目のスレッドで各要素を合計しますか?

どうもありがとう。

デバイスクエリ:

Makefile: nvcc -arch=sm_20 cuda_test.cu -o cuda_test

cuda_test.cu で: