2

「mex」編集した cpp 関数 (function.cpp") があります。次に、Visual Studio で function.cpp ファイルを開き、実行中の matlab プロセスに Visual Studio をアタッチします。

matlab で関数を呼び出すと、function.cpp ファイルにブレークポイントを設定して、変数を観察しながらステップ実行できます。

関数を cuda ファイル (function.cu) に変更すると、デバッグ プロセスが失敗します。上記のプロセスに従って、まだ function.cu 内で停止できますが、変数が表示されません。変数を「監視」しようとすると、「エラーシンボル..見つかりません」と表示されます

私はビジュアルスタジオにnsightをインストールしました。質問: function.cpp ファイルの場合と同様に、デバッグ モードでファイル function.cu の変数を確認するにはどうすればよいですか。これは可能ですか?

function.cu はプロジェクトに含まれていないことに注意してください。関数の cpp コードを含む単なるスタンドアロン ファイルです (somefunction(){} など)。デバッグ目的で、ビジュアルスタジオで開いています。「nvmex -g wrapper.cu」を使用して matlab で function.cu ファイルをコンパイルしています。wrapper.cu は、function.cu 内に記述された somefunction() を呼び出す matlab mexfunction ラッパーです。

4

3 に答える 3

1

ホストデバッガーであるVSデバッガーを使用しているため、デバイスプログラムのデバッグ方法がわかりません。Windows でデバイス コードをデバッグするには、Parallel Nsight Visual Studio Editionを確認する必要があります。

実行中のプロセスにアタッチするためのガイドについてドキュメントを検索できます。現在のリリース (2.2) の特定のページはこちらです。

于 2013-01-18T11:42:24.437 に答える
0

VS をアタッチしましたが、関数 'main' で停止しました。あなたはまだCPUコードを打っているようです。Tom の提案に従ってデバッガーを接続するとき、トランスポート ドロップダウンで「NVIDIA GPU Debugger」を選択しましたか?

于 2013-01-21T01:20:23.950 に答える
-2

cuda コードをデバッグするには、デスクトップ環境/サーバーが実行されていない GPU が必要です。つまり、2 番目の GPU が必要です。それがnvida GPUでなければならないかどうかも100%確信が持てません。あなたのコードをBedubgできるようになります。Linux では、x サーバーをシャットダウンし、コマンド ラインごとに cuda-gdb を使用してデバッグできるため、1 つの GPU だけでデバッグできます。詳細については、cuda-gdb マニュアルを参照してください。

于 2013-01-17T21:11:58.150 に答える