問題タブ [jcuda]
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.
java - jcuda または cuda: over と other の長所と短所
私の母国語は Java です (知っていることは知っていますが、自分を変えることはできません)。
そこで、CUDA と JCUDA の長所/短所を知りたいと思いました。
jcuda.orgがあることを知りました。
前もって感謝します。
java - Javaからcudaデバイスカーネルを使用していますか?
Java とJcudaライブラリを使用して CUDA にアクセスしています。単純なアプリケーション (vectorAdd など) を実行できました。ただし、カーネルのコードは非常に大きくなると述べています。.cu ファイル? CUDA C を使えば可能だということはわかっていたのですが、Java だとエラーが出てしまいませんか? 誰でも助けることができますか
前もって感謝します
cuda - JCuda固定メモリの例
JCuda + GEForce Gt640 質問:
結果が GPU によって計算された後、デバイスからホストへのメモリのコピーに関連するレイテンシを削減しようとしています。単純な Vector Add プログラムを実行すると、レイテンシの大部分が実際に結果バッファをホスト側にコピーしていることがわかりました。ソース バッファからデバイス側への転送レイテンシは 30 ミリ秒程度で無視できますが、結果のコピーは 20 ミリ秒程度です。
私が調査を行ったところ、結果をコピーするよりも良い方法は固定メモリを使用することであることがわかりました。私が学んだことから、このメモリはホスト側に割り当てられますが、カーネルは pci-e 経由で直接アクセスできるため、計算後に結果を一括でコピーするよりも高速になります。次の例を使用していますが、期待どおりの結果が得られません。
カーネル: {ポイントを説明するための簡単な例、1 ブロック 1 スレッドのみの起動}
ジャワ:
1.) カーネルを構築します: root@NVS295-CUDA:~/JCUDA/MySamples# nvcc -ptx JCudaKernel.cu root@NVS295-CUDA:~/JCUDA/MySamples# ls -lrt | grep ptx -rw-r--r-- 1 ルート ルート 3295 3 月 27 日 17:46 JCudaKernel.ptx
2.) Java をビルドします: root@NVS295-CUDA:~/JCUDA/MySamples# javac -cp "../JCuda-All-0.5.0-bin-linux-x86/*:." JCudaTest.java
3.) 次のコードを実行します: root@NVS295-CUDA:~/JCUDA/MySamples# java -cp "../JCuda-All-0.5.0-bin-linux-x86/*:." JCudaTest 0 0 0 0 0
予想: 1 2 3 4 5
注: 問題がある場合は、x86 用に JCuda0.5.0 を使用しています。
私が間違っていることを教えてください。事前に感謝します:Ilir
debugging - JCuda プログラムのデバッグ
JCuda プロジェクトに最適なデバッガーを知りたい (存在する場合)。
通常の CUDA アプリケーションには cuda-gdb や cuda-memcheck などのツールがあることは知っていますが、JCuda プロジェクトでそれらのツールまたは類似のツールを使用できるかどうか疑問に思っています。
ありがとうございました!
cuda - JCuda: 多次元配列をデバイスからホストにコピー
数か月間 JCuda を使用してきましたが、多次元配列をデバイス メモリからホスト メモリにコピーできません。面白いことに、反対方向に実行しても問題はありません (多次元配列を使用してカーネルを呼び出すことができ、すべてが正しい値で機能します)。
簡単に言うと、カーネルの結果を short の 2 次元配列に入れます。このような配列の最初の次元はスレッドの数であり、それぞれが異なる場所に書き込むことができるようにします。
ここに例があります:
私は何を間違っていますか?
編集:
どうやら、この (およびその他の多くの) スレッドで述べられているように、デバイスに割り当てられたメモリをホストにコピーすることを許可しないいくつかの制限があります:リンク
回避策はありますか?CUDA ツールキット v5.0 を使用しています
java - OpenCL (GPU 使用) を追加するのに助けが必要
特に、ゲームに取り組んでおり、FPS が期待どおりに増加するため、CPU よりも GPU を使用することを好むことにしました。問題は、どこから始めればよいかわからないということです。JOCL または JCUDA を簡単に実装できますが、その後、CPU を使用して GPU に置き換える場所がわかりません。助けていただければ幸いです:)
java - jCuda Pointer 関数でのインデックス作成
jCuda で関数 pointer.to(int[ ]) を使用して、1 次元の「結果」配列としましょう。「結果」の最初の n 個の場所にデータのチャンクを書き込み、次のデータのチャンクを Result[0 + チャンク] 以降に書き込みます。
C と違って Result+chunk とは言えません。では、中間の場所にどのようにインデックスを付けるのですか?