問題タブ [cula]
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.
r - gputools: インストール エラー
NVidia Tesla 2050 GPU カードを搭載した新しい Dell Precision ワークステーションをセットアップしています。R のパッケージ gputools をインストールしたいと思います。私のOSはopenSuse 11.3 with KDE 4.4です。
NVidia の CUDA ツールキット 3.2 をダウンロードして /usr/local/cuda にインストールし、最新バージョンの CULA ツール セット (バージョン R10) もダウンロードして /usr/local/cula にインストールしました。
install.packages("gputools") を使用して R 内から gputools をインストールしようとすると、次のエラー メッセージが表示されます。
古いバージョンの CULA および CUDA ツールセットを使用しても役に立ちません。
cuda - cula(dgesv) を使用して線形方程式系を解くと、小さなデータ セットの場合に mkl (dgesv) よりも遅いのはなぜですか
CULA ルーチン dgesv と MKL ルーチン dgesv を使用して行列方程式 Ax=b を解く CUDA C および C プログラムを作成しました。小さなデータセットの場合、CPU プログラムは GPU プログラムよりも高速のようです。しかし、データ セットが 500 を超えると、GPU が CPU に勝ります。i3 CPU と Geforce 525M GPU を搭載した Dell ラップトップを使用しています。GPU の初期の遅いパフォーマンスの最も適切な説明は何ですか?
2 つのベクトルを取り、それらを乗算して結果を加算する別のプログラムを作成しました。これは、結果がスカラーではなくベクトル和であるという点だけで内積と同じです。このプログラムでは、小さなデータセットでも GPU が CPU よりも高速です。同じノートを使っています。上記で説明したものと比較して、小さなデータセットでもこのプログラムで GPU が高速なのはなぜですか? 合計に多くの計算が含まれていないためですか?
matlab - CUDA GPU での A*x=B の Matlab + CUSP MEX ソリューションの改善
Matlab はまだ CUDA GPU でスパース行列を計算できません。そのためのツールボックスもありません (Jacket は廃止されました)。そのため、MEX ファイルを介して Matlab に統合された CUSP を使用しています。ただし、開発したツールには 2 つの問題があります。
- 大きな方程式系 (実際には 100 個の要素から始まる) では非常に不安定です。
- Matlab の代替 CPU よりも数十倍または数百倍遅いです。
A*x=b を解いています。ここで、A は疎な対称行列、b はベクトルです。
ハードウェア仕様: Intel i7 3630QM、GT640M 2G、8 GB DDR3。ソフトウェア: Windows 8 64 ビット、Matlab R2012b 64 ビット、CUDA 5.0 64 ビット、CUSP 0.3.1、Windows SDK v7.0、VS2010 コンパイラ。
MEX コード:
これらのコマンドを使用して、Matlab の MEX ファイル (ex.cu) でこのコードをコンパイルします (必要に応じて 32 ビットの 2 番目のコマンドを変更します)。
サンプルの行列、ベクトル、およびコンパイルされた 64 ビット MEX 関数: http://www.failai.lt/3fqkhvoslxyt/sampleData.7z.htm
使用する:
ここで、times - 個別の実行時間、last element - 解に使用される反復回数 (bicgstab モニター)、result - K*x=F の解。
結果 ( http://www.failai.lt/rupaliln7kfb/results.7z.htm ):
- K_int_6、F_int_6 - わかりました
- K_11、F_11 - x(1) 間違っている、他は問題ない
- K_100000、F_100000 - x(1) が間違っています。他のものは最初から問題ありませんが、後で正しい結果と比較して減少しています。
- K_100000、F_100000 - GPU (MEX) では 0.6 秒、CPU では 0.014 秒 ( tic;xcpu=K\F;toc; ) 実行されます。
そのコードを見て、MEX 関数を試して、結果を報告し、関数を改善する方法を提案していただけませんか? GPU でスパースな計算を可能にする代替手段をご存知でしょうか? Matlab が GPU 上の疎行列の互換性をリリースするまで、すべての人に役立つことを願っています :)
cuda - GPU 上の CULA で 3D 行列を使用するには?
一部のコードの CPU バージョンでは、次のようなものが多数あります。
A[i]
あるサイズの 2D 行列はどこにありますか。
CULA を使用して GPU でこれを実行できるようにしたいと考えています (乗算だけを行っているわけではないため、CULA で Linear ALgebra 操作が必要です)。たとえば、次のようになります。
ただし、Bは変更されないため、プログラムの開始時に事前にGPUにBを保存したいと思いますが、それを行う方法がわかりません。または、これが可能になるように、一般的に配列を保存する方法。
CUDA で 3D マトリックスを使用することについてオンラインでさまざまなことを見てきましたが、CULA 関数への関数呼び出しを行うことができるようにはあまり当てはまらないようです。
以下の回答の例から、私はこれを持っています:
double **GlobalFVecs_d をグローバルとして宣言した場所。しかし、回線にヒットするとセグフォルトが発生します
しかし、それはまさに他の例にあるものと思われますか?
同じではないことに気付いたので、次のようにコンパイルするコードを作成しました。
ただし、次の方法でアクセスしようとすると、次のようになります。
代わりにここで障害をセグメント化しますが、これはデータを取得する方法ではありませんか?
c++ - GPU 上の他のベクトルへのポインターのベクトルにアクセスする
したがって、これは私が持っていた質問のフォローアップです。現在、一部のコードの CPU バージョンでは、次のようなものがたくさんあります。
ここで、A[i] はあるサイズの 2D 行列になります。
CULA を使用して GPU でこれを実行できるようにしたいと考えています (乗算だけを行っているわけではないため、CULA で Linear ALgebra 操作が必要です)。たとえば、次のようになります。
しかし、B は変更されないので、プログラムの開始時に事前に GPU に保存したいので、B を構成する一連のベクトルへのポインタを含むベクトルが必要です。
私は現在、コンパイルする次のコードを持っています:
しかし、私が今アクセスしようとすると:
ここで障害をセグメント化しますが、これはデータを取得する方法ではありませんか?
私が呼び出しているカーネル関数は次のとおりです。
私は何をしていないのですか?最終的には、最初の例として、各 GlobalFVecs_d[i] で cula 関数を呼び出したいと思いますが、今のところこれでも機能しません。
これがこれを行うための最良の方法だと思いますか? CULA関数に大きな連続ベクトルのスライスを渡すことができれば、それを行うことができますが、それがサポートされているかどうかはわかりません。
乾杯リンドリー
visual-c++ - ビルド時に GPUMLib の未解決のエクスターナル
GPUMLib をビルドしようとしていますが、次のエラーが表示されます。
これを引き起こしている可能性のあるアイデアはありますか? これは、ライブラリ全体からのビルドに失敗した唯一の部分であることに注意してください