問題タブ [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.
matrix - CUBLASまたはサポートされているライブラリ、および初心者向けの読書に重点を置いています
GPU(nVidia Quadro NVS140M)の能力を利用して、プロジェクトのマトリックス計算を高速化しようとしています。いくつかのドキュメント(プログラミングガイド、ベストプラクティスガイド、リファレンスマニュアル)を読んでいますが、どのセクションに焦点を当てるべきかわかりません。これについてアドバイスをいただければ幸いです。
また、CuBLAS.netなどのサードパーティが保守しているSDKがあるかどうか疑問に思っています。これにより、プロジェクトで目標を達成するのに役立つ提供されているcublasの機能に固執する前に、cublas開発プロセスが簡素化される可能性があります。繰り返しになりますが、コメントを事前に感謝します。
c++ - CUBLAS メモリ割り当てエラー
次のように、浮動小数点数の 17338896 要素を割り当てようとしました (これは約 70 MB です)。
CUBLAS_STATUS_ALLOC_FAILED
ただし、変数状態のエラー メッセージが表示されます。これは、マシンで使用可能なビデオ カード メモリの量 (私の場合は 128 mb) と関係がありますか、それとも cublasAlloc() 関数を使用して割り当てることができるメモリ量の制限でしょうか (つまり、量には関係ありません)。マシンで使用可能なメモリの量)? cudaMalloc() 関数を使用してみましたが、同じ問題が発生しています。ご検討いただきありがとうございます。
--------------エラー再現の追加-------------------------------- -----
memory - CUDAとCuBlasのメモリ管理
cudamalloc()またはcublasalloc()関数を使用して割り当てられた行列にメモリブロックを使用して、cublas関数を呼び出すことができることに気付きました。cudamalloc()を使用して配列を使用することには他の利点もありますが、cublasalloc()ではなくcudamalloc()を使用して割り当てられた配列の場合、行列の転送速度と計算は遅くなります。なぜそうなのですか?いくつかのコメントを聞くのは素晴らしいことです。
boost - BLASとCUBLAS
NVIDIA の cuBLAS ライブラリについて疑問に思っています。誰もそれを経験したことがありますか?たとえば、BLAS を使用して C プログラムを作成した場合、BLAS の呼び出しを cuBLAS の呼び出しに置き換えることができますか? または、ユーザーが実行時に選択できるメカニズムを実装する方がよいでしょうか?
Boost が提供する BLAS ライブラリを C++ で使用するとどうなりますか?
c++ - Visual Studio の cublas リンク
Visual Studio で cublas.h を使用しようとしています。一部の外部リンクが見つからないため、プログラムはコンパイルされません。.dll ファイルをリンクする方法を教えてもらえますか?../C/common/bin にあると思います。
matrix - CUDA-単純な行列の加算/合計演算
これは非常に単純なはずですが、完全な答えを見つけることができませんでした。
行列を使用してA+B = Cを実行する必要があります。ここで、AとBはサイズが不明な2つの行列です(最大値として2x2または20.000x20.000になる可能性があります)
計算にはSgemm関数付きのCUBLASを使用する必要がありますか?
達成可能な最高速度が必要なので、十分に最適化する必要があるCUBLASライブラリを考えました
c++ - CUBLAS - 行列の追加..どうやって?
未知のサイズの 2 つの大きな行列を合計するために CUBLAS を使用しようとしています。(可能であれば) 完全に最適化されたコードが必要なので、行列加算コード (単純) を書き直すのではなく、CUBLAS、特に A と C (B が単位行列の場合) を合計できる cublasSgemm 関数を使用することにしました: *C = alpha*op(A)*op(B)+beta*c*
問題は次のとおりです。C および C++ は行列を行優先形式で格納しますが、cublasSgemm は (fortran との互換性のために) 列優先形式で動作することを意図しています。A と B を最初に転置するかどうかを指定できますが、C を転置するように指定することはできません。そのため、行列の追加を完了することができません..
行列の最大サイズは 20000x20000 程度なので、自分で C 行列を転置することはできません。
解決方法を教えてください。
matrix - CUBLAS - 行列要素の累乗は可能ですか?
行列演算には CUBLAS (Cuda Blas ライブラリ) を使用しています。
CUBLAS を使用して、行列項目の累乗/二乗平均平方根を達成することは可能ですか?
つまり、2x2 行列を持つ
私が欲しいのは、与えられた値、例えば2に昇格する関数です
二乗平均平方根の計算など
これはCUBLASで可能ですか?この目的に適した関数が見つかりませんが、まずここで独自のカーネルのコーディングを開始するように依頼します。
cuda - CUBLAS行列の乗算
CUDAで行列乗算を実装した後。私はそれをCUBLASで実装しようとしました(フォーラムの何人かの人々のアドバイスに感謝します)。
正方行列を乗算することはできますが、(もう一度...)非正方行列の操作に問題があります。動作する非正方行列乗算の唯一のタイプは、行列Aの幅(A * B = C)を変更する場合です。
エラーは発生しませんが、結果のマトリックスは間違った値を返します。これが私のコードです(これは基本的にsimpleCUBLAS SDKの例を応用したものです):
何かご意見は?また、誰かがCUBLASで動作している行列乗算の実装を持っているので、比較できますか?前もって感謝します。
cuda - CUDAストリームに関する問題
入力行列(A [x / num_of_streams * y] B [x y] = C [x / num_of_streams * y])を細分化することにより、単一のGPU(Tesla C2050)上のさまざまなストリームでCUBLAS v2.0を実行していますが、どういうわけかCUDAストリームを使用すると時間がかかります。コードスニペットは次のとおりです。
そのため、ストリーム間を行き来して作業を割り当て、実行時間が短縮されることを期待していますが、ストリームの数が多いほど、ストリームを使用しないバージョンと比較して、プログラムに時間がかかることに気付きます。どこが間違っているのですか?Nvidiaフォーラムへのクロスポスト-http://forums.nvidia.com/index.php?showtopic= 209420
編集:
プログラムを次のように変更しました。
プログラムを6144の行列次数でプロファイリングすると、次の情報が得られます。
上記のループの時間を計ると、0.000284秒の時間が得られますが、ストリームを使用しないバージョンの場合は1.703289秒です(このバージョンでも、2つのシーケンシャルメモリコピー、カーネル呼び出しと残りのmemCpyの時間を計ります)。私は同期構造を使用していないので、計算が実際に終了するまでの時間を印刷しているのではないかと思います(100%の改善があるとは信じがたいです)。