問題タブ [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.

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

cuda - CUDA キューブgbmv 理解

私は最近、単純な CUDA 行列とベクトルの乗算を使用したいと考えていました。cublas ライブラリで適切な関数を見つけました: cublas<<>>gbmv。ここに公式ドキュメントがあります

klしかし、実際には非常に貧弱なので、とkuパラメータの意味を理解できませんでした。さらに、何が何でstrideあるかわかりません(それも提供する必要があります)。これらのパラメータの簡単な説明 (37 ページ) がありますが、他に何か知っておく必要があるようです。

インターネットで検索しても、この質問に関する有用な情報は多くありません。ほとんどの場合、別のバージョンのドキュメントへの参照です。

そこで、GPU/CUDA/cublas の達人にいくつか質問があります。

  1. cublas の使用に関するよりわかりやすいドキュメントやガイドを見つけるにはどうすればよいですか?
  2. この機能の使い方を知っているなら、使い方を説明してくれませんか?
  3. もしかしたら、cublas ライブラリーはやや特殊で、誰もがより人気のある、より適切に文書化されたものなどを使用しているのではないでしょうか?

どうもありがとう。

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

c - キュブラはアトラスよりも優れているはずですか?

cublas と atlas の両方からの dgemm の私の測定によると、atlas は速度の点で cublas を大幅に上回っています。これは、Intel i7 950 と Nvidia GTX470 を搭載したシステムで予期されることですか?

サイズ 10x10 から 6000x6000 までの行列を 50 刻みでテストしました。Atlas は常に勝ちます。アプリケーションの実行全体と乗算ステップのみを測定します。

他の誰かがこれを経験していますか?これは期待される結果ですか?

前もって感謝します。

編集: (同じコード、Xeon X5670 と Nvidia Tesla C2050 で同じ結果)

edit2: cublas ライブラリの初期化が原因であるとすれば、かなりの遅さのようです。私はそれに取り組み続けています。詳細がわかり次第、ここで更新します。

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

cuda - cuBlas 関数 cublasSrotg および cublasSrot を使用した QR 分解のギブンズ回転

私はCUDAが初めてで、cuBlasライブラリを使用してQR分解のギブンス回転を実装しようとしました。

使った

cublasStatus_t cublasSrotg(cublasHandle_t handle, float *a, float *b, float *c, float *s)

c と s を計算するため

cublasStatus_t cublasSrot (cublasHandle_t handle, int n, float *x, int incx, float *y, int incy, const float *c, const float *s)

1000 x 1000 マトリックスの回転用。cublaSrotg() はパラメーター a と b を r と z で上書きするため、デバイス メモリ内の行列を使用できません。ただし、行列の要素をホストにコピーするには、ループのサイクルの約 90% を要します。C での実装は、最大 3 倍高速です。

私はそれを間違って使用していますか?CUDA デバイスでのギブンス回転のより良い代替手段は何ですか?

前もって感謝します、クリス

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

cuda - cublas関数を呼び出すときのアクセス違反

次のコードに問題があります。cublasSrotgの呼び出しを実行すると、例外がスローされます。「dA」ポインタのアドレスである「アクセス違反の書き込み場所0x05200600」。デバッガーを実行すると、cudaMallocの呼び出しをスキップしているように見えますが、何が間違っているのか理解できません。

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

java - cublasSgemmjcuda による一括使用

行列の乗算のためにjcudaでcublasSgemmBatched() 関数を使用しようとしてきましたが、ポインターの受け渡しとバッチ処理された行列のベクトルを適切に処理する方法がわかりません。この問題を適切に処理するためにコードを変更する方法を誰かが知っていれば、本当に感謝しています。この例では、cublasGetVector の後、C 配列は変更されません。

0 投票する
0 に答える
1244 参照

cuda - cuSparseとcuBlasの三角ソルバー

実際、私は数日前に関連する質問を投稿しましたが、ゼロの回答が得られましたが、前の質問で述べたように、昨日は非常に奇妙な発見になりました:cusparsecsrsv_analysisのパフォーマンスが非常に遅い、cusparseのスパース三角ソルバーの分析フェーズは煩わしいほど遅いです。もちろん、係数行列のスパースパターンで並列化が許可されていない場合は不要な場合もあるので、cublasの密な三角ソルバーがそれをどのように処理するかを確認したかったので、置き換えました。係数行列を密な形式に変換した後のカブラスソルバーを備えたカスパースソルバー。同じ行列が与えられ、マトリックス形式の変換時間をCuBlasソルバーに含めた後でも、カブラスバージョンはカスパースバージョンよりも約7倍高速でした。どちらの場合も正しいようにソリューションを修正しました。

CuSparseバージョン

CuBlasバージョン

テストケース:

  • サイズ(N)= 5000 * 5000
  • 非ゼロの数(NZ)= 35,000
  • 反復回数:3
  • CuSparseソリューション時間、1回実行された分析フェーズ:180ミリ秒
  • CuBlasソリューション時間:30ミリ秒
  • GPU:GeForce GTX 550 Ti
  • OS:Windows 7 Ultimate、64ビット

もちろん、CuBlasを使用することは私にとって実用的ではありません。私の作業には、100,000から始まり1,000,000に達する大きな次元の行列が含まれるため、そのようなサイズのメモリ割り当ては単純に実用的ではありません。したがって、スパースソルバーを開始する方法はありません。分析フェーズ?

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

cuda - グローバル関数またはデバイス関数から CUDA CUBLAS 関数を呼び出すことは可能ですか?

既存のアプリケーションを並列化しようとしています。ほとんどのアプリケーションを並列化して GPU で実行しています。1 つの関数を GPU に移行する際に問題が発生しています。

この関数は、blas ライブラリの一部である関数 dtrsv を使用します。以下を参照してください。

以下のように、同等の cuda/cublas 関数を呼び出すことができました。生成された結果は、fortran dtrsv サブルーチンと同等です。

私の問題は、以下のように、デバイスまたはグローバル関数から cublasDtrsv を呼び出せるようにする必要があることです。

cuda 4.0 で以下をコンパイルしようとすると、以下のエラーが発生します。__device__または__global__関数から cublas 関数を呼び出すことができる手段があるかどうかは誰にもわかりませんか?

エラー: /function("cublasDtrsv_v2")からのホストの呼び出しは許可されていません__device____global__ function("Dtrsv__dev")

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

cuda - CUBLASライブラリが正しい結果を提供しない

私はCUBLASライブラリを調べようとしているので、そのAPIを使用して行列乗算のコードを作成しました。しかし、私は奇妙な出力を得ています。以下のコードと出力を貼り付けています。私を助けてください。

- - - - -出力 - - - - - - -

マトリックスA

0.000000 1.000000 2.000000

3.000000 4.000000 5.000000

6.000000 7.000000 8.000000

マトリックスB

0.000000 1.000000 2.000000

3.000000 4.000000 5.000000

6.000000 7.000000 8.000000

マトリックスC(結果)

-1998397155538108416.000000 -1998397155538108416.000000 -1998397155538108416.000000

-1998397155538108416.000000 -1998397155538108416.000000 -1998397155538108416.000000

-1998397155538108416.000000 -1998397155538108416.000000 -1998397155538108416.000000

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

cuda - CUBLAS ルーチンを使用して GPGPU で内積を保持する

内積の CUBLAS ルーチンを使用して 2 つのベクトルの内積を計算するコードを作成していますが、ホスト メモリに値が返されます。GPGPU のみでのさらなる計算に内積を使用したいと考えています。CPU から GPGPU への明示的なコピーを作成せずに、値を GPGPU のみに存在させ、それをさらなる計算に使用するにはどうすればよいですか?

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

c++ - cublas saxpy 使用時のエラー

cublasSaxpycublasの関数を使用しようとしています。

コードを見てください:

そのため、CUDA 5.0 RC1 の Eclipse nsight を使用しています。プロジェクトを完了していないため、ビルドしませんでしたが、IDE は saxpy 操作で読み取りの下線を表示します。