【问题标题】:cudaMalloc always gives out of memorycudaMalloc 总是内存不足
【发布时间】:2012-12-18 20:03:01
【问题描述】:

我面临一个简单的问题,我对 cudaMalloc 的所有调用都失败了,给了我一个内存不足错误,即使它只是我分配的一个字节。

cuda 设备可用,并且还有大量可用内存(通过相应调用检查机器人)。

知道可能是什么问题吗?

【问题讨论】:

  • 您可以运行 SDK 示例吗?您能否为我们提供一个不适合您的代码示例?
  • 你能提供一些你尝试过的例子吗?

标签: cuda out-of-memory


【解决方案1】:

请尝试在代码本身的开头调用 cudaSetDevice()、cudaDeviceSynchronize() 和 cudaThreadSynchronize()。

cudaSetDevice(0) 如果只有一个设备。默认情况下,CUDA 运行时会将设备初始化为 0。

cudaSetDevice(0);
cudaDeviceSynchronize();
cudaThreadSynchronize();

请回复您的观察。如果仍然失败,请指定操作系统、架构、CUDA SDK 版本、CUDA 驱动程序版本。如果可能,请提供失败的代码/代码 sn-p。

【讨论】:

    【解决方案2】:

    感谢大家的帮助。

    问题并不在于 cudaMalloc 本身,但它掩盖了真正的问题,这是由于 cuda 的初始化似乎失败了。

    因为第一次调用 cuda 是在一个单独的线程中,所以我没有可用的 GLContext,导致失败。在初始化上下文之后,我需要确保在主线程中通过虚拟 malloc 初始化了 cuda。

    【讨论】:

      猜你喜欢
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      相关资源
      最近更新 更多