0

编辑:

我已经向 Cuda 申请了一个图像描述符......我将它测试到一个图像并且一切顺利......之后我想尝试它来测试许多图像(即 10000)以测试串行之间的时间差并平行。所以我把我的代码放到一个 for 循环中(不是分配和内存释放)。问题发生在这里......当我尝试这样做时,似乎应用程序和更具体的函数 cudaDeviceSynchronize() 崩溃并出现错误代码 6。现在,我进行了搜索,我发现一方面这个错误可能是因为在 cudaDeviceSynchronize() 之前调用的内核是异步的,事实是通常只有一个特定的 cudaDeviceSynchronize() 函数在特定内核之后调用崩溃。一到两次崩溃,下一个内核又在另一个内核之后。

另一方面,我发现了一些关于看门狗定时器的信息......当我用 Nsight 禁用它并再次运行我的程序时,电脑完全冻结了。所以我想由于某种原因,一些线程或所有线程都没有结束它们的操作,所以 cudaDeviceSynchronize() 不允许程序继续,并且在 2 秒(默认)后看门狗计时器停止应用程序。关于为什么内核滞后的任何想法?可能是因为我的设备?我正在使用具有 Capability 1.1、Cuda 版本 4.2、Windows 7 和 Visual Studio 2010 的 GeForce G 103M。

非常感谢!

4

0 回答 0