1

私は小さなCUDAアプリケーションを実行しています:QuickSortベンチマークアルゴリズム(ここを参照)。NVIDIA 660GTX(デバイス0)と8600GTS(デバイス1)を備えたデュアルシステムがあります。

Windows8およびVisualStudioでは、アプリケーションはデバイス0で問題なくコンパイルおよび実行されます。Linux(Ubuntu 12.04 LTS)では、アプリはnvccおよびgccでコンパイルされますが、トラックで突然停止し、を返します(unspecified launch failure)

私には2つの問題があります:

  1. このエラーの後、GPUは他の操作を実行できません。たとえば、bandwidhtTest最初のデータ転送を実行するときにSDKサンプルブロックを実行しますが、実行deviceQueryは引き続き正常に実行されます。GPUをリセットするにはどうすればよいですか?私はすでにcudaDeviceReset()方法を試しましたが、それは役に立ちません
  2. Linuxで何が問題になっているのかを知るにはどうすればよいですか?誰かが手がかりを持っているか、これを以前に見たことがありますか?

よろしくお願いします!

4

3 に答える 3

1
  1. GPU に互換性がある場合は、nvidia-smi ユーティリティを使用して GPU をリセットできます。

  2. 私の知識と経験では、(unspecified launch failure)通常はセグメンテーション フォールトを参照します。使用する適切な GPU を指定しましたか? cuda-memcheck を使用して、メモリの範囲外のシナリオがあるかどうかを確認してください。

于 2012-12-30T21:11:07.737 に答える
0

私の経験から、XID 31は常に不正なポインタへのアクセスによって引き起こされていました(別名メモリアクセス違反)。

私は最初にこの道を追求します。cudamemcheckを使用してアプリケーションを実行します。そのようにしてcuda-memcheck you_app args to your app、間違ったメモリアクセスが見つかるかどうかを確認します。cuda-gdbまた、またはNsightEclipseEditionを使用してコードをステップ実行してみてください。

于 2013-01-01T21:26:38.673 に答える