4


JCuda プロジェクトに最適なデバッガーを知りたい (存在する場合)。
通常の CUDA アプリケーションには cuda-gdb や cuda-memcheck などのツールがあることは知っていますが、JCuda プロジェクトでそれらのツールまたは類似のツールを使用できるかどうか疑問に思っています。
ありがとうございました!

4

2 に答える 2

4

通常の CUDA デバッガー (Nsight や cuda-gdb など) を使用して、JCuda アプリケーションで GPU コードをデバッグできるはずです。Java デバッガー (Eclipse など) を使用して Java コードをデバッグできます。ただし、Java および CUDA コードをシームレスにデバッグできるデバッガーはありません。

于 2013-08-01T15:45:16.813 に答える
1

Linux では、Nvidia Nsight (cuda-gdb) を使用できます。

実行可能ファイルを起動するデバッグ セッションを設定するには:

  • root としてNsight を起動します (驚くべきことですが、私には必要です)
  • [実行] メニュー > [デバッグ構成...] に移動します。
  • 「C/C++ アプリケーション」を右クリックし、「新規」を選択します
  • メインタブの下
    • 実行可能ファイル (フィールド C/C++ アプリケーション) を、/usr/bin/javaまたは正しいパスに設定します
  • 引数タブの下
    • 起動引数を設定します。-jar target/MyApp.jar
    • 作業ディレクトリを設定する
  • デバッガータブの下
    • 「CUDA GDB init file」パスを設定します(以下を参照)
    • CUDA memcheck を有効にするなど、追加のオプションを設定します

Java は非常に巧妙な目的でセグメンテーション違反を内部的に使用するため、次の GDB オプションを使用してファイルを作成し、それを「CUDA GDB init ファイル」として指定する必要があります。このオプションを設定すると、独自の JNI コード内のセグメンテーション違反のバグをキャッチできなくなることに注意してください。これは問題にはなりません。

handle SIGSEGV nostop noprint pass

デバッグ シンボルを使用してカーネルをコンパイルすると、それらをデバッグできるようになります。

于 2017-11-02T11:32:03.137 に答える