1

我正在运行一个小型 CUDA 应用程序:QuickSort 基准算法(参见此处)。我有一个带有 NVIDIA 660GTX(设备 0)和 8600GTS(设备 1)的双系统。

在 Windows 8 和 Visual Studio 下,应用程序在设备 0 上编译和运行完美无缺。在 Linux(Ubuntu 12.04 LTS)下,应用程序使用 nvcc 和 gcc 编译,但突然停止运行,返回一个(unspecified launch failure).

我有两个问题:

  1. 出现此错误后,我的 GPU 无法执行其他一些操作,例如,在bandwidhtTest执行第一次数据传输时运行 SDK 示例块,但运行deviceQuery继续执行良好。如何重置我的 GPU?我已经尝试过该cudaDeviceReset()方法,但它没有帮助
  2. 如何在 linux 下找到问题所在?有人知道或以前见过吗?

在此先感谢您的帮助!

4

3 回答 3

1
  1. 如果 GPU 兼容,您可以使用 nvidia-smi 实用程序重置它

  2. 以我的知识和经验,(unspecified launch failure)通常裁判会出现分段错误。您是否指定了要使用的正确 GPU?尝试使用 cuda-memcheck 查看是否有任何内存超出范围的情况。

于 2012-12-30T21:11:07.737 回答
0

我发现使用

cuda-memcheck -b ...

防止设备锁定。

于 2013-06-04T16:37:35.097 回答
0

根据我的经验,XID 31 总是由访问错误指针(又名内存访问冲突)引起的。

我会先追寻这条路。使用cuda memcheck运行您的应用程序。像这样cuda-memcheck you_app args to your app,看看它是否发现任何错误的内存访问。cuda-gdb还可以尝试使用Nsight Eclipse Edition单步执行代码。

于 2013-01-01T21:26:38.673 回答