問題タブ [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 - Eclipse で mavenized JCUDA の依存ライブラリが見つかりません
私が取り組んでいるプロジェクト用に Mavenized JCUDA をセットアップしようとしていますが、ライブラリ ファイルの場所を Java に伝える際に問題が発生しています。
ファイルをビルドするための maven のセットアップと取得.jar
は正常に機能し.dll
ました。正しい名前の.dll
ファイルが表示されproject\target\lib
、ネイティブ ライブラリの場所をこのフォルダーに設定しています。
JCUDA JCublasSample.java (www.jcuda.org/samples/JCublasSample.java) からプログラムの 1 つを実行しようとしたときに発生するエラーは次のとおりです。
入力データを作成中... JavaでSgemmを実行中... JCublasでSgemmを実行中...
スレッド「メイン」の例外 java.lang.UnsatisfiedLinkError: ネイティブ ライブラリを読み込めませんでした。
ベース名「JCublas」のネイティブ ライブラリ「JCublas-windows-x86_64」のロード中にエラーが発生しましたオペレーティング システム名: Windows 7 アーキテクチャ: amd64 アーキテクチャ ビット サイズ: 64
ライブラリをリソースとしてロードしようとしたときのスタック トレース: java.lang.NullPointerException: No resource found with name '/lib/JCublas-windows-x86_64.dll'
jcuda.LibUtils.loadLibraryResource(LibUtils.java:149) で jcuda.LibUtils.loadLibrary(LibUtils.java:83) で jcuda.jcublas.JCublas.initialize(JCublas.java:93) で jcuda.jcublas.JCublas.(JCublas .java:81) JCublasSample.sgemmJCublas(JCublasSample.java:64) JCublasSample.testSgemm(JCublasSample.java:49) JCublasSample.main(JCublasSample.java:25)
ライブラリをファイルとしてロードしようとしたときのスタック トレース: java.lang.UnsatisfiedLinkError: C:\Users\kristoffer.bernhem\git\SMlocalizer\target\lib\JCublas-windows-x86_64.dll: 依存ライブラリが見つかりません
java.lang.ClassLoader$NativeLibrary.load(Native Method) で java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) で java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857) で java.lang.Runtime で.loadLibrary0(Runtime.java:870) で java.lang.System.loadLibrary(System.java:1122) で jcuda.LibUtils.loadLibrary(LibUtils.java:94) で jcuda.jcublas.JCublas.initialize(JCublas.java: 93) jcuda.jcublas.JCublas.(JCublas.java:81) で JCublasSample.sgemmJCublas(JCublasSample.java:64) で JCublasSample.testSgemm(JCublasSample.java:49) で JCublasSample.main(JCublasSample.java:25) でjcuda.LibUtils.loadLibrary(LibUtils.java:128) で jcuda.jcublas.JCublas.initialize(JCublas.java:93) で jcuda.jcublas.JCublas.(JCublas.java:81) で JCublasSample.sgemmJCublas(JCublasSample.java:64) JCublasSample.testSgemm(JCublasSample.java:49) で JCublasSample.main(JCublasSample.java:25) で
Guenther が説明したように、問題.dll
は不足しているサポート ファイルにあります。このエラーを整理するにはどうすればよいですか?
これは Windows 7 (64 ビット) で実行され、JDK1.8.0_91 で実行されます。
java - JCusolverSp_LinearSolver_Direct は JCuda 0.7.5 または 0.7 でコンパイルできません
http://www.jcuda.org/samples/samples.htmlには、現在、ダウンロード用の JCusolverSamples20151013.zipがあります。0.7.5 や 0.7 などの jcuda の現在のバージョンが適合するようです。
ただし、2 つの Java ファイルの 1 つである JCusolverSp_LinearSolver_Direct.java はコンパイルできず、3 つの異なるメソッドに関して 5 つのエラーが含まれています。すべてのエラー メッセージは、最後の引数「int[]」ではなく「ポインタ」の不一致に関する次のメッセージに似ています。
JCuda 0.7.0も確認しましたが、メソッドに関するAPIは同じです。私は Jcuda を初めて使用するので、サンプルの JCusolverSp_LinearSolver_Direct Java ファイルを変更する方法がわかりません。それを機能させる方法は?
java - jcuda追加プログラムの実行中にエラーが発生しました
私はjCUDAの初心者です。Windows で Eclipse を使用して、 NVIDIAサンプルからベクトル加算プログラムをコンパイルしようとしています。
これが私のプログラムです:
エラーメッセージ:
手伝ってくれませんか?
jcuda - JCuda の JCublas2.cublasSdot: 結果 Pointer パラメーターにデバイス Pointer を使用できませんでした
JCublas2.cublasSdot のソース コードのコメントでは、'result' パラメーターが 'ホストまたはデバイス ポインター' になる可能性があるとコメントされています。
ただし、float[] fs ={0} を指定した Pointer.to(fs) のようなホスト ポインターしか使用できません。「CUdeviceptr devicePtr = new CUdeviceptr();」のようなデバイス ポインタを使用すると、JCudaDriver.cuMemAlloc(devicePtr, 100 * Sizeof.FLOAT);'、プログラムは次のようなコンソール メッセージでクラッシュします。
ホストとデバイス間のデータ転送を最小限に抑えることで、時間を節約できます。このメソッドの「結果」引数としてデバイス ポインタを使用する方法、および /** ホストまたはデバイス ポインタ **/ でコメントされた結果ポインタを持つ他の JCuda メソッドを使用する方法は?
cuda - GTX1080 で約 2.2 GB のメモリを使用した後の CUDA メモリ不足メッセージ
CUDA 8.0 を搭載したバージョン 0.8.0RC の JCuda を使用して、GTX1080 GPU で行列乗算を行っています。2 つの行列 A と B を行優先のベクトル形式でデバイスに読み込み、デバイスから積行列を読み取ります。しかし、予想よりも早くデバイスのメモリが不足していることに気付きました。たとえば、行列 A の次元が 100000 * 5000 = 5 億エントリ = 2GB 相当の float 値である場合、次のようになります。
正常に動作します。しかし、数または行を 100000 から 110000 に増やすと、この呼び出しで次のエラーが発生します (行列 B と C のメモリ割り当ての前に行われるため、これらは問題の一部ではありません)。
問題は、このサイズのマトリックスをデバイスに割り当てるのに約 2.2GB しかかからず、GTX1080 には 8GB のメモリがあるため、メモリが不足している理由がわかりません。誰もこれについて何か考えがありますか?CUDA 8 のリリース バージョンで JCuda 0.8.0RC を使用しているのは事実ですが、JCuda 0.8.0RC で使用するために CUDA 8 の RC バージョン (8.0.27) をダウンロードしようとしたところ、問題が発生しました。 . ただし、バージョンの互換性が問題になる可能性がある場合は、もう一度試すことができます。
もちろん、100000 * 5000 の行列はかなり大きいので、ニューラル ネットワーク プロジェクトでしばらくの間、より大きな行列を使用する必要はありませんが、この新しいプロジェクトで 8 GB のメモリをすべて使用できると確信したいと思います。カード。助けてくれてありがとう。
java - JCUDA で cuCtxSynchronize() を実行すると「CUDA_ERROR_ILLEGAL_ADDRESS」が発生する
私はJCudaを学んでおり、JCudaのサンプルで勉強しています。
JCuda を使用して KMeans アルゴリズム コードを調べたところ、cuCtxSynchronize(); 行を実行すると「CUDA_ERROR_ILLEGAL_ADDRESS」が返されました。
それは私をとても混乱させました。どうすれば解決できますか?
ここにKMeansKernel.cuがあります
メインメソッド(「CUDA」という名前の私のクラス):
メソッド KmeansKernel:
スタックトレース:
java - jcudaでCUDAコア数を取得するにはどうすればよいですか?
jcudaで CUDA コア数を取得するにはどうすればよいですか?
私はこれを試しましたが、正しい出力を生成しません:
16 が返されますが、640 cudacore の Nvidia GPU が 1 つあります。
上記のプロパティの JavaDoc は、こちらから入手できます。どんな助けでも大歓迎です。