問題タブ [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 - CUDA/cublasで行列を転置する方法は?
A*B
GPU 上の次元の行列があるとします。ここで、 B
(列数) は C スタイルを想定した主要な次元です。この行列を FORTRAN スタイルに転置する CUDA (または cublas) の方法はありますA
か?
host->device
元のデータを変更せずに、転送時に転置できるとさらに良いです。
c - cuBlas、cuda関数が機能せず、エラーは発生しません
これは、問題を示す最小限のプログラムです。Windows 7 で 128 個の CUDA コア、CUDA 5.0 を搭載した GTS 250 を使用しています。
次の出力は、データが GPU メモリに読み込まれている間、実際には操作が行われなかったことを示しています。
R の値: 0.123020、0.367809、0.834681、0.035096、0.517014、0.662984、0.426221、0.104678、
CUBLAS の初期化に成功しました。
デバイスのメモリ割り当てに成功しました。
cublasSasum はエラーを生成しませんでした。dRの合計: 0
cublasSaxpy はエラーを生成しませんでした。
cublasSaxpy 後の R の値: 0.123020、0.367809、0.834681、0.035096、0.517014、0.662984、0.426221、0.104678、
R で cudaMemset をゼロ設定してもエラーは発生しませんでした。
cudaMemset でゼロにした後の R の値: 0.123020、0.367809、0.834681、0.035096、0.517014、0.662984、0.426221、0.104678、
どうしたの?(そしてハッピー ホリデー。:))
c - BLASのベクトルにスカラーを追加する(cuBLAS / CUDA)
明らかな何かを見落としているだけかどうかはわかりませんが、周りをグーグルで調べているにもかかわらず、BLAS操作を使用してベクトル(または行列)にスカラーを単純に追加する方法がわかりません。私はcuBLAS/CUDAでこれを実行しようとしているので、そのフレームワーク内でこれを達成するためのあらゆる方法を取ります。BLASに<t>scal
はスカラー乗法(cublas<t>scal
)がありますが、加算のアナログはどこにありますか?!つまり、GSLに類似したものですgsl_vector_add_constant
。私は何が欠けていますか?
cuda - 行列にスカラーを掛ける
私はcudaとcublasの初心者です。
行列 (cublasSetMatrix を使用) の各要素にスカラー値を乗算したいと考えています。
そのために cublasscal() を使用できますか? ドキュメントには、ベクター用であると書かれています。
ありがとう。
cuda - cublasDgemmはCUBLAS_STATUS_EXECUTION_FAILEDを返します
cublasDgemmを使用して2つの行列を乗算しています。
cublasDgemmを使用して、出力へのポインターを返すメソッドを作成しました。
単体テストではうまく機能しているようですが、アプリケーションコードでは失敗します(リターンコードCUBLAS_STATUS_EXECUTION_FAILED)。
私は今何度もコードを調べましたが、すべて問題ないようです。とにかく、より良いエラーの説明を得るために何かありますか?
更新:2回目のcublasDgemm呼び出しはすべて機能するようです。最初にこのエラーが発生し、2番目に成功しました。何かアイデアはありますか?
Update2:これは私の電話です
ありがとう。
performance - 最大のパフォーマンスでCUDAの行列列を正規化する方法は?
CUDAで行列列を効果的に正規化するには?
私の行列は列優先で格納され、通常のサイズは 2000x200 です。
この操作は、次の matlab コードで表すことができます。
これは、Thrust、cuBLAS、および/または cuNPP によって効果的に実行できますか?
4 つのカーネルを含む迅速な実装を以下に示します。
特に cublasDgemv() によって実装される列の合計ステップのパフォーマンスを向上させるために、これらを 1 つまたは 2 つのカーネルで実行できるかどうか疑問に思っています。
cuda - 例外 (最初のチャンス) ... メモリ内の cudaError_enum
そのため、いくつかの調査で問題がcublasライブラリにあることが示された後、そのエラーを吐き出すプロジェクトに取り組んでいます。
したがって、次の「最小限の」問題があります。
問題を再現できるかどうかをテストするために、NVIDIA CUDA SDK (4.2) から simpleCUBLAS の例を開きました。
プログラム自体は機能しますが、VS2010 でも同様の出力が得られます。
Eine Ausnahme (erste Chance) bei 0x75e3c41f in simpleCUBLAS.exe: Microsoft C++-Ausnahme: cudaError_enum an Speicherposition 0x003bf704..
7回
だから私の仕様に:
コンピューティングに GTX 460 を使用し、sm_20 でコンパイルして、Windows 7 64 ビットで VS2010 を使用し、nvcc --version を実行すると、次のようになります。
nvcc: NVIDIA (R) Cuda コンパイラ ドライバ Copyright (c) 2005-2011 NVIDIA Corporation Build on Fri_Jan_13_01:18:37_PST_2012 Cuda コンパイル ツール、リリース 4.1、V0.2.1221
ここに投稿するのはこれが初めてなので、投稿の形式がひどいもので申し訳ありません
cuda - CUDAの行列の行または列を減らす
cuBLAS
行列演算を実行するためにCUDAを使用しています。
行列の行(または列)を合計する必要があります。現在、行列に1のベクトルを乗算して実行していますが、これはそれほど効率的ではないようです。
より良い方法はありますか?に何も見つかりませんでしたcuBLAS
。
cuda - cuBLAS howto での行列乗算の転置
問題は単純です: 私は 2 つの行列 A と B を持っています。これらは M × N であり、ここで M >> N です。最初に A の転置を取り、それを B (A^T * B) で乗算して、これを C に入れます。これは N x N です。A と B のすべてをセットアップしましたが、間違った答えを返さずに適切に cublasSgemm を呼び出すにはどうすればよいでしょうか?
cuBlas には、事前に転置するための cublasOperation_t 列挙型があることは理解していますが、どういうわけか、それを正しく使用していません。私の行列 A と B は行優先順、つまり [row1][row2][row3]..... デバイス メモリ内にあります。つまり、A が A 転置として解釈されるためには、BLAS は A が列優先順であることを認識する必要があります。私の現在のコードは以下のようになります:
私の質問:
m、k、n を正しく設定していますか?
lda、ldb、ldcはどうですか?
ありがとう!
cuda - 隣接要素を含む推力ベクトル変換
ベクトルがあり、CUDA と Thrust 変換を使用して次のことを実行したいと考えています。
これを正しく実装するにはどうすればよいですか? 私ができる 1 つの方法は、ベクトル w を持ち、thrust::transform を v に適用し、結果を w に保存することです。しかし、k は前もって不明であり、w1、w2、... を作成して多くの GPU メモリ スペースを浪費したくありません。できれば、データのコピー量を最小限に抑えたいと考えています。しかし、値が互いに踏み込まずに1つのベクトルを使用してこれを実装する方法がわかりません。これを行うことができるスラストが提供するものはありますか?