問題タブ [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.

0 投票する
0 に答える
147 参照

java - jcuda追加プログラムの実行中にエラーが発生しました

私はjCUDAの初心者です。Windows で Eclipse を使用して、 NVIDIAサンプルからベクトル加算プログラムをコンパイルしようとしています。

これが私のプログラムです:

エラーメッセージ:

手伝ってくれませんか?

0 投票する
1 に答える
88 参照

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 メソッドを使用する方法は?

0 投票する
1 に答える
950 参照

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 のメモリをすべて使用できると確信したいと思います。カード。助けてくれてありがとう。

0 投票する
1 に答える
719 参照

java - JCUDA で cuCtxSynchronize() を実行すると「CUDA_ERROR_ILLEGAL_ADDRESS」が発生する

私はJCudaを学んでおり、JCudaのサンプルで勉強しています。

JCuda を使用して KMeans アルゴリズム コードを調べたところ、cuCtxSynchronize(); 行を実行すると「CUDA_ERROR_ILLEGAL_ADDRESS」が返されました。

それは私をとても混乱させました。どうすれば解決できますか?

ここにKMeansKernel.cuがあります

メインメソッド(「CUDA」という名前の私のクラス):

メソッド KmeansKernel:

スタックトレース:

0 投票する
1 に答える
184 参照

java - jcudaでCUDAコア数を取得するにはどうすればよいですか?

jcudaで CUDA コア数を取得するにはどうすればよいですか?

私はこれを試しましたが、正しい出力を生成しません:

16 が返されますが、640 cudacore の Nvidia GPU が 1 つあります。

上記のプロパティの JavaDoc は、こちらから入手できます。どんな助けでも大歓迎です。

0 投票する
1 に答える
201 参照

dllimport - 指定されたプロシージャが見つかりませんでした: for jcuda 9.2

jar.exe ツールで抽出した JCudaDriver の dll をロードしようとしています。

そのドライバーは間違いなく私の java.libary.path にあります。手動で削除すると、代わりに not-found type エラーが発生するためです。今、私は次のエラーを受け取ります。

スレッド「メイン」の例外 java.lang.UnsatisfiedLinkError: myPath.JCudaDriver-0.9.2-windows-x86_64.dll.dll: 指定されたプロシージャが見つかりませんでした

私の理解では、この指定された手順は、別の dll への依存関係が欠落しているか、バージョンの衝突があるということです。dumpbin /dependents xx.dll依存するdllを見つけるために、コマンドラインでWindowsユーティリティ機能を使用しました。それらは次のとおりです。

エラーなしで nvcuda.dll をロードできますが、後者の 2 つは問題です。

これは、ADVAPI32.dll をロードしようとしたときのエラーです。

スレッド「メイン」の例外 java.lang.UnsatisfiedLinkError: C:\aaa_eric\code\lib\dlls_x64\advapi32.dll: %1 は有効な Win32 アプリケーションではありません

0 投票する
1 に答える
112 参照

java - NVIDIA コントロール パネルがコンピューティングの最適化を設定すると、cuCtxCreate が失敗する

JCuda APIを介してCUDAを実行します。NVIDIA コントロール パネルを使用して、参加している JVM 実行可能ファイル (java.exe) のコンピューティングの最適化 (デフォルトではオフ) を設定すると、プログラムは cuCtxCreate の呼び出しでコンテキストを作成できません。

最適化が開始されると、プログラムは問題なく実行されます。唯一の問題は、実行ごとのカーネルの経過時間の偏差が大きすぎること (~50%) でした。より安定した結果を得るために、独占モードのようなもので CUDA コアを取得する方法を探していました。

コントロール パネルでこのパラメータを誤解していませんか?

スレッド「メイン」jcuda.CudaException での例外: com.varankin.cuda.CudaContext の jcuda.driver.JCudaDriver.cuCtxCreate(JCudaDriver.java:1606) の jcuda.driver.JCudaDriver.checkResult(JCudaDriver.java:353) で CUDA_ERROR_UNKNOWN。 (CudaContext.java:21)

構成:

  • デフォルトの GPU として設定されている統合グラフィックス搭載の Intel i7-4510U。
  • 共有メモリ空間上の NVIDIA GeForce 840M。
  • ウィンドウズ10
  • Java 8、リビジョン。152
  • JCuda-All-0.9.0d-bin-x86_64
  • cuda_9.2.148_win10.exe からの CUDA
0 投票する
0 に答える
65 参照

java - JCuda サンプル ファイルのエラー

私は Java GPU のこと (JCuda) はまったく初めてで、JCuda がどのように機能するか、また私のニーズ (JAVA レンダラー) に役立つかどうかをテストして理解しようとしているので、JCuda の例をダウンロードして NetBeans 8 にロードしました。たとえば、JCudaDriverVolumeRendererJOGL.java のいずれかのサンプル ファイルを実行しようとすると、出力ウィンドウに警告/エラーが表示されます。具体的には、上記のクラスの場合です (ただし、これらのサンプル ファイルのほとんどでエラーが発生しました。GUI を作成していないサンプルのみです)。 JCudaRuntimeMemoryBandwidths の例のように動作しています):

プロジェクトの印刷画面で以下に示すように、必要なファイルはすべて正しいパスにあります。 ここに画像の説明を入力

誰でもここで何が間違っているのか説明できますか (私のコードはどこにも追加していません。サンプルの zip ファイルにある元のファイルだけです)。

編集

この特定の例では、問題に「nvcc」(それが何であれ)が欠けているように見えるため、その「nvcc」を検索していたところ、CUDA Toolkit 10(Win7 x64 の最新バージョン)の一部であることがわかりました- 私の場合) ダウンロード (1.7GB) してローカル マシンにインストールする必要があります。しかし、なぜJCudaの例でこのことについて言及されていないのかは奇妙で、このような難しい方法を自分で見つけなければならないようです。

アップデート

その CUDA ツールキットをインストールすると、以前のエラーはなくなりましたが、新しいエラーがポップアップします。

nvcc fatal : Cannot find compiler 'cl.exe' in PATH

お気に入り、。真剣に: JCuda for JAVA を使用できるようにするためだけに、MS VisualStudio もインストールする必要がありますか? どうやら cl.exe はその MS ソフトウェアの一部のようで、それを入手する方法は他にありません。

更新 2

MSVC 2010 Express for Desktop Windows をダウンロードしてインストールしました。これは最初のものでした-最も古いもので、実際には見つけるのがかなり困難です(=最小のインストールファイルサイズ、約500MB +それに付随する不要なゴミの最小値、覚えておいてください:cl.exeが必要だっただけです)-x64ファイルのサポートが統合されています(x64 NetBeansを搭載したWin7 x64マシンでコンパイルしているため。またcl.exe、システム環境変数PATHにパスを手動で追加する必要がありました(そうしないと、それをインストールしたら、インストーラーがその sys 変数を自動的に設定するはずですよね?) + MSVC インストール ディレクトリの VC\bin 内に amd64 という名前の新しいディレクトリを手動で作成し、そこに 1 つの簡単なバット ファイルも作成します。今回は別のエラーで不平を言っていますMicrosoft Visual Studio configuration file 'vcvars64.bat' could not be found for installation at 'C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin/この投稿の最初の回答によると)まだ別のコンパイルエラーが発生しています(!!!)、別のファイルを見つけることができません。具体的crtdefs.hには、わかりませんが、他の試みをゆっくりとあきらめています...私は本当に疑問に思っています.JCudaのこれらのサンプルファイルを実際に正常に実行できる人が、この世界にいるのでしょうか?! 信じられない...