問題タブ [cublas]
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++ - 非 GPU メモリで blas 操作を使用するために cublasDdot() を使用できますか?
したがって、行列の乗算を実行するコードがありますが、問題は、ライブラリ -lcublas とコンパイラ nvcc を使用するとゼロしか返されないことです。ただし、ライブラリ -lblas でコンパイラ g++ を使用すると、関数名を少し調整するだけで、コードはうまく動作します。
-lcublas ライブラリを使用して、GPU にないメモリから行列乗算を実行できますか?
0 を返すコードは次のとおりです。
次のコマンドを使用してコンパイルします。nvcc program -lcublas
ただし、これは機能します。
でコンパイルg++ program -lblas
cuda - CUDA を使用した要素ごとのベクトル乗算
CUDA で基本的なカーネルを構築して、2 つの複素ベクトルの要素ごとのベクトル間の乗算を行いました。カーネル コードは下に挿入されます ( multiplyElementwise
)。それは正常に動作しますが、他の一見単純な操作 (ベクトルのスケーリングなど) が CUBLAS や CULA などのライブラリで最適化されていることに気付いたので、私のコードをライブラリ呼び出しで置き換えることができるかどうか疑問に思っていました。驚いたことに、CUBLAS にも CULA にもこのオプションはありません。ベクトルの 1 つを対角行列ベクトル積の対角にすることで偽装しようとしましたが、結果は非常に遅くなりました。
multiplyElementwiseFast
最後の手段として、2 つのベクトルを共有メモリにロードし、そこから作業することで、このコードを自分で最適化しようとしましたが (以下を参照)、元のコードよりも遅くなりました。
だから私の質問:
- 要素ごとのベクトル間の乗算を行うライブラリはありますか?
- そうでない場合、コードを高速化できますか (
multiplyElementwise
)?
どんな助けでも大歓迎です!
cuda - Cublas で定数メモリを使用するには?
通常のメモリ アロケータで cublasIsamax を使用すると、正常に動作します。
しかし、定数メモリで試してみると、不明なエラー N14 で失敗します。なにが問題ですか?定数メモリへのコピーは成功しましたが、実行に失敗しました。
matlab - ThrustまたはCublasの2つの行列WとXの間の行からすべての行への距離行列を見つけるにはどうすればよいですか?
次のmatlabコードがあります。
ここで、X は nxm、W は kxm 行列の実数です。1 つはデータで、もう 1 つは重み行列です。指定されたコードで距離行列 D を見つけます。この操作の効率的な Cublas または Thrust の実装を見ています。D = -2*(X * C.');
cublasでラインを引き継いだが、残りの部分はまだ初心者としての質問ですか? スニペットを手伝ったり、提案をしたりできる人はいますか?
これが私がこれまでに持っているものです: 編集:さらにコードを追加し、合計の実装のような bsxfun が必要です。最終ステップとして、すべての列でベクトル V を合計し、すべての行で V2 を合計します。
matlab - CUBLAS または THRUST を介して CUDA で bsxfun をプログラミングしますか?
nx1 項目を持つベクトル V と nxm 項目を持つ行列 M があります。V と M のすべての列を CUDA で合計したい。問題を回避するのに役立つ THRUST または CUBLAS の方法はありますか?
cuda - シンボル「cudaStreamCreate」への未定義の参照
CMake を使用してプロジェクトをビルドすると、次のリンカー エラーが発生し、解決方法がわかりません。を使用make VERBOSE=1
すると、私には問題ないように見える生成されたコマンドが明らかになります。
およびリンカーエラー:
cuda - cublas{t}symm() 関数の引数の設定方法
この関数は、CUDA を使用して対称行列 - 行列乗算を実行します。非対称版の「cublas{t}gemm()」を使うことには成功しましたが、「cublas{t}symm()」関数をうまく使えませんでした。
CUBLAS ライブラリが列優先の行列ストレージを使用していることは知っています。私は行優先の C/C++ 行列を使用しており、入力行列などを置き換えることで「cublas{t}gemm()」の問題を解決する方法を知っています。ただし、対称の場合は解決できませんでした。問題は、列優先の行列ストレージを使用しても、予期しない結果が得られることです。行列には複素浮動小数点 (cuComplex) が含まれます。行優先の行列があるとします。コードと出力は次のとおりです。
乗算には次の行列があると思います。
A =
B =
そして得ることを期待する
A*B =
しかし、得られたOUTPUTは次のとおりです。
このコードには何が欠けていますか? 「cublasCsymm」関数の引数が間違っている可能性があります。
ありがとう、カガン