問題タブ [cusolver]
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.
cuda - CUDAのみでの特異値計算
cusolverDnSgesvd
特異値の計算に CUDA 7.0の新しいルーチンを使用しようとしています。完全なコードは以下に報告されています。
完全な SVD の計算を要求すると ( jobu = 'A'
andのコメント行jobvt = 'A'
)、すべて正常に動作します。特異値のみの計算を要求すると (jobu = 'N'
とのある行jobvt = 'N'
)、cusolverDnSgesvd
戻り値が返さ れます。
devInfo = 0
この場合、無効なパラメータを見つけることができないことに注意してください。
また、ドキュメントの PDF にはパラメーターに関する情報が不足rwork
しているため、ダミーのパラメーターとして扱っていることにも注意してください。
cuda - 密な線形システム AX = B を CUDA で解く
新しい cuSOLVER ライブラリ (CUDA 7) を使用して次の形式の線形システムを解くことはできますか?
とA
はX
密B
行列NxN
ですか?
c++ - cuda 7.0 RC の cusolver を使用した固有値と固有ベクトルの計算
CUDA 7.0 RC でリリースされた cuSolver を使用して、最大の固有値/固有ベクトルのペアを計算しようとしています。問題は、CUSOLVER_INTERNAL_ERROR が発生していることです。これについて何ができるかわかりません。
これは私の便利なもので、cuda/cusparse/cusolver 関数を呼び出すために使用されます。
そして、これは私のコードです
初期固有値推定 (つまり、cuSolver ライブラリ チュートリアルの max_lambda または mu0)、初期固有ベクトル推定 (h_eigenvector0 または d_eigenvector0)、許容誤差 (tol)、さらには最大反復量 (maxite) のさまざまな選択を既に試しました。
疎行列が適切に記述されているかどうかは既に確認しました (私には正しいように思えました)。また、返された固有ベクトルをMatlabで確認しましたが、それらは完全に異なります(そうすべきではないと思います)。
他に何ができるかわかりませんが、誰かが知っているなら教えてください!!
前もって感謝します。
cuda - CUDAによるコレスキー分解
cuSOLVER ライブラリを使用してコレスキー分解を実装しようとしています。私は初心者の CUDA プログラマであり、常にブロック サイズとグリッド サイズを指定してきましたが、プログラマが cuSOLVER 関数を使用して明示的に設定する方法を見つけることができません。
ドキュメントは次のとおりです。http://docs.nvidia.com/cuda/cusolver/index.html#introduction
QR 分解は cuSOLVER ライブラリを使用して実装されます (ここの例を参照してください: http://docs.nvidia.com/cuda/cusolver/index.html#ormqr-example1 )。さらに、上記の 2 つのパラメータは設定されていません。
要約すると、次の質問があります
- ブロックサイズとグリッドサイズのパラメーターは、cuSOLVER ライブラリーでどのように設定できますか?
- NVIDIA のドキュメントに記載されている QR のサンプル コードで同じことを行うにはどうすればよいですか?
cuda - cusolverDn への未定義の参照
cuda 7.0 で利用可能な cuSolver ライブラリを実行しようとしています。cuSolver ライブラリの使用に関して問題があり、修正が非常に簡単である必要がありますが、ここで助けを求めています。
投稿されたかなりの数の例を見てきましたが、特にJackOLanternからこれを選びました:
それをkernel_0.cuに減らしました:
JackOlantern と同じ Utilities.cuh と Utilities.cu を使用します。私はそれを(明示的に)次のようにコンパイルします:
そして、私が得るものは次のとおりです。
cusolverDnCreate と cusolverDnDestroy をコメント アウトすると、問題なくコンパイルされるため、ライブラリが適切に含まれているようです。
欠けている単純で基本的なポイントは何ですか? いろいろ調べましたが、直りませんでした。ありがとうございます。
cuda - 複数の CUDA SVD を呼び出す (cuSolver 内)
CUDA 7.0 (cuSolver) の SVD ルーチンを使用します。マトリックスを分割するすべての部分で SVD を実行する必要があります (たとえば、マトリックスを 2x2 ブロックに分割し、SVD を 4 回並列で実行したい)。アイデアは、行列の細分化に関連してカーネルを数回呼び出すことです。それで:
しかし、この方法では、カーネルへの呼び出しはシリアルであり、パラレルではありません。これらの関数をカーネルから呼び出すことはできないため、これらの呼び出しを並列化するにはどうすればよいですか?
cuda - CUDA で cuSolver を使用して順方向と逆方向の解を繰り返す方法は?
最近、私は新しい方法を開発しました。新しい方法は CUDA (20 から 40FPS) で完璧に機能し、私はすでにそれをうまくテストしています。問題は、古い方法と比較しようとしたときに発生します。古い方法はCPUに実装されました。最初に LU 分解A = LUを実行し、次に forward+back ステップを実行して ( LU ) x = bを解きます。古い方法の非常に優れた点は、Aが変わらないことです。そのため、LU 分解は 1 回だけ実行でき、オーバーヘッドは順方向と逆方向の解だけです。Aはスパースで対称正定です。(これは、固定領域での流体シミュレーションなど、多くの問題でかなり一般的な方法だと思います。)
比較を公平にするために、古い方法を GPU に実装したいと考えています。しかし、cuSolver または cuSparse でスパース LU 分解が見つかりませんでした。他のライブラリで計算する必要がありますか? 解決には cusolverRfSolve() を使用しますか? もしそうなら、なぜLとUは入力されず、PとQがこの関数に入力されるのですか? 私がやろうとしていることに似た実例はありますか?
古い方法が GPU で遅く実行されたとしても、新しい方法が非常に役立つので、それを見てみたいと思います。
c++ - cuSolver 使用時のリンカー エラー
cuda 7.0 で利用可能な cuSolver ライブラリを使用して SVD の例を実行しようとしています。
このコードを実行すると:
次のエラーが表示されます。
VS2010 を使用していますが、cusolverDn
ライブラリが含まれているようです。
私は何を逃したのですか?前もって感謝します。
編集:
VS 設定: デバッグ >> プロジェクト プロパティ >> 構成プロパティ >> CUDA C/C++ >> 追加のインクルード ディレクトリ >> ...\NVIDIA GPU Computing Toolkit\CUDA\v7.0\include
デバッグ >> プロジェクト プロパティ >> 構成プロパティ >> CUDA リンカー >> 追加のライブラリ ディレクトリ >> ...\NVIDIA GPU Computing Toolkit\CUDA\v7.0\lib\x64;%(AdditionalLibraryDirectories)
cuda - NVIDIA の cuSolver ライブラリを使用した Pycuda のセグメンテーション エラー
Nvidia の新しい cuSolver ライブラリで提供されるいくつかの操作のために、scikits-cuda ライブラリに 触発された pycuda ラッパーを作成しようとしています。しかし、その前に「Workspace」引数が必要です。これを取得するために cuSolver が提供するツールは、cusolverDnSgetrf_bufferSize(); という名前です。しかし、私がそれを使用すると、クラッシュしてセグメンテーション違反を返します。私が間違っていることは何ですか?
注: 私はすでに scikits-cuda でこの操作を行っていますが、cuSolver ライブラリはこの種の引数を多く使用しており、scikits-cuda と私の実装の使用法を新しいライブラリと比較したいと考えています。