問題タブ [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 に答える
1860 参照

asynchronous - 非同期 cuBLAS 呼び出し

cuBLAS ルーチンを非同期で呼び出したい。出来ますか?はいの場合、どうすればそれを達成できますか?

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

cuda - cuBLAS の cudaGetErrorString と同等ですか?

CUDA ランタイムにはcudaGetErrorString(cudaError_t error)、エラー列挙型を読み取り可能な文字列に変換する便利な関数があります。多くの人が CUDA エラー処理に使用するマクロでcudaGetErrorString使用されます。CUDA_SAFE_CALL(someCudaFunction())

cuBLAS に慣れてきたので、cuBLAS 用のようなマクロを作りたいと思っていますCUDA_SAFE_CALLcudaGetErrorStringマクロの出力を便利にするために、cuBLASに似たものを用意したいと考えています。

cudaGetErrorString()cuBLASに相当するものはありますか? または、このような関数を書いた cuBLAS ユーザーはいますか?

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

performance - キュブラスの性能

CUDA 5.0 を使用しており、C と cuBLAS の行列乗算を比較したいと考えています。私はすでに、C と cuBLAS の行列乗算が両方とも正しい答えを返すプログラムを作成しました。

次に、それらのパフォーマンスを比較したいと思います。Cでの実装には を使用しclock()ましたが、CUDA 5.0にはcutilが存在しないことがわかったので、 を使用しcudaEventました。どちらの実装も同じ行列を使用します。C では、C が行列の乗算を実行する時間を測定しましたが、cuBLAS では からcreatehandleまで測定を開始しましたdestroyhandle


C が 0.08 ミリ秒、cuBLAS が 59 ミリ秒かかり、その後cuBLAS の時間を測定すると、cuBLAS は C よりも高速になりましclock()た。時間を測定するために使用した方法が正しいかどうかはわかりません。なぜ異なる答えをするのですかcudaeventclock()

Nvidiaのドキュメントに従って、cuBLAS、cudaeventを使用しています。時間を正しく測定する方法について、私は本当に困惑しています。

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

cuda - cublasGetVector でこの結果が得られるのはなぜですか?

配列 (次元) が cublas でどのように構成されているかを理解するのに苦労しました。次のテストを行いましたが、出力を説明できません。助けてくれてありがとう!

出力:

こんにちは世界!前: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 22 23 24 25

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

cuda - cusparse csrsvanalysis が機能することもあれば、失敗することもあります

Ax = bを解決するために、前提条件付き共役勾配を使用しようとしています。そこで、cuda-sdk で与えられたサンプルを例に取りました。関数を呼び出すと、cusparseScsrsv_analysis「実行に失敗しました」というエラー 6 が返されることがあります。時々、それはうまくいきます。

行列 A は対称正定行列です。

また、共役勾配は同じデータに対して正しく機能します。

これが私のコードです:

N は列と行の数、nnz はゼロ以外の要素の数です。私のマトリックスは csr 形式です。

編集:特別な要件はありません。これはメモリが原因ではないと思います.2GB以上あり、大きなマトリックス(48MB)を使用していません.

jacobi precondionner を使用して前処理付き共役勾配を試してみましたが、正しく機能しますが、cusparse で分析しようとすると、半分の時間で失敗します。

私が欲しいのは、cusparse と cublas を使用して Maxim Noumov ( http://developer.download.nvidia.com/compute/DevZone/docs/html/CUDALibraries/doc/Preconditioned_Iterative_Methods_White_Paper.pdf ) のアルゴリズムを使用することです。

EDIT2

curspace について説明が必要です。記述子にこの行を入れるとcusparseSetMatType(descr,CUSPARSE_MATRIX_TYPE_SYMMETRIC);、分析は機能しますが、奇妙なことは、上部または下部だけでなくマトリックス全体を保存することです。入れたらcusparseSetMatType(descr,CUSPARSE_MATRIX_TYPE_GENERAL);動かない。dev_row_ptrさらに、m が行数である m+1 要素に格納する必要がある理由がわかりません。最後の要素には何を入れますか?

他の質問: 関数cusparseScsric0は入力/出力として行列値 (ドキュメントでは csrValM) を受け取ります。これは行列全体を入力として取り、不完全なコレスキーの上三角または下三角だけを出力として取ります。それはどのように機能しますか?

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

cuda - cublasはピン留めされたメモリ割り当てを行うことができますか?

「cudaHostAlloc」によって割り当てられたピン留めされたメモリは、「malloc」されたメモリよりも効率的にデバイスに転送できることを理解しています。ただし、「cudaHostAlloc」はcudaコンパイラでしかコンパイルできないと思います。私のシナリオは、cudaコンパイラなしでcublas APIを使用することですが、cublasはハンドブックからの固定メモリ割り当ての機能を提供していないようです。または、何かが足りないかもしれません...

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

cuda - cublas-4.1.28 では、関数のパラメーターに規約の変更はありますか?

cublas を使用して、次の行列 - 行列乗算を実行したいと考えています。

先行インデックスとして K を使用して cA を割り当て、先行インデックスとして N を使用して cB を割り当てました。cublas-4.0 ハンドブックによると、次のことを行う必要があります。

しかし、うまくいきませんでした。代わりに、次のコードは、文字通り cA と cB を切り替えることによって、期待される結果を生成します。

私が使っていたcublasのバージョンは4.1.28です。関数パラメーターに規則の変更はありますか? ありがとう!

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

parallel-processing - CUDA カーネルは cublas 関数を呼び出すことができますか?

奇妙に聞こえるかもしれませんが、これが私のシナリオです。

行列と行列の乗算 (A(n*k)*B(k*n)) を実行する必要がありますが、出力行列に対して評価される対角要素のみが必要です。cublas ライブラリを検索しましたが、それを実行できるレベル 2 または 3 の関数は見つかりませんでした。そこで、A の各行と B の各列を CUDA スレッドに分散することにしました。各スレッド (idx) について、内積 "A[idx,:]*B[:,idx]" を計算し、対応する対角出力として保存する必要があります。さて、この内積にも時間がかかるので、どうにかしてここで cublas 関数 (cublasSdot など) を呼び出してそれを達成できないかと考えています。

私の目標を直接達成できるいくつかの cublas 関数を逃した場合 (行列-行列乗算の対角要素のみを計算する)、この質問は破棄される可能性があります。

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

cublas - cublasカーネル機能は自動的にホストと同期されますか?

cublasに関する一般的な質問です。シングルスレッドの場合、GPUからCPUへのメモリ転送(例:cublasGetVector)がない場合、cublasカーネル関数(例:cublasDgemm)は自動的にホストと同期されますか?

さらに、2つの隣接するカーネル呼び出しの間はどうですか?

また、以前のカーネルで使用されていたグローバルメモリを含まない同期転送についてはどうでしょうか。

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

cuda - cuBLAS argmin -- デバイス メモリに出力する場合は segfault ですか?

cuBLAS では、cublasIsamin()単精度配列の argmin を指定します。

完全な関数宣言は次のとおりです。cublasStatus_t cublasIsamin(cublasHandle_t handle, int n, const float *x, int incx, int *result)

cublasIsamin()cuBLAS プログラマー ガイドには、パラメーター に関する次の情報が記載されています。ここに画像の説明を入力

にホスト(CPU) メモリを使用するとresultcublasIsamin正常に動作します。次に例を示します。

ただし、デバイス(GPU) メモリをに使用するresultと、cublasIsaminsegfault が発生します。セグメンテーション違反の例を次に示します。


Nvidia のガイドには、「cublasIsamin()」でデバイスのメモリに出力できると書かれています。私は何を間違っていますか?


動機:複数のストリームで同時に複数のベクトルの argmin() を計算したいと考えています。ホスト メモリへの出力には CPU と GPU の同期が必要であり、マルチカーネルの同時実行性が失われているようです。そのため、代わりにargminをデバイスメモリに出力したいと思います。