【问题标题】:Cuda 7.5 and Visual Studio 2013: Some examples work, but other returns cudaErrorDevicesUnavailableCuda 7.5 和 Visual Studio 2013:一些示例有效,但其他示例返回 cudaErrorDevicesUnavailable
【发布时间】:2015-12-13 06:04:39
【问题描述】:

我最近在 Windows 8.1 中安装了 CUDA 7.5 和 Visual Studio 2013。在测试示例后,它对某些示例非常有效,例如 Mandelbrot 或 matrixMul。但是,在测试 Marching Cubes 和 Bilateral Filtering 等示例时,出现以下错误:

“CUDA Runtime API 错误 46:所有支持 CUDA 的设备都忙或不可用”

我已经测试了“deviceQuery”并且它有效。另外,我在带有 Geforce GT630m 的华硕笔记本上使用 CUDA。我尝试将计算模式设置为 DEFAULT,但没有任何区别。

【问题讨论】:

  • 问题与在 Optimus 笔记本电脑上运行的图形互操作应用程序有关。您的笔记本电脑正在使用 Intel 图形设备。创建 OpenGL 或 D3D 上下文时,它是在英特尔设备上创建的。您可以使用以下几种方法之一强制在 CUDA 设备(正确的 CUDA/图形互操作所需)上发生这种情况,其中一种方法是在 NVIDIA 显示控制面板中创建application profile
  • 成功了。谢谢!
  • 将此评论提升为答案。

标签: c++ visual-studio visual-studio-2013 cuda


【解决方案1】:

大多数配备英特尔 CPU 且包含 NVIDIA“独立”GPU 的现代 Windows 笔记本电脑也以合作方式使用英特尔“集成”显卡,NVIDIA 品牌 Optimus

基本思想是 NVIDIA GPU 将在某些情况下执行一些图形任务,但其他任务(可能在其他情况下)将由 Intel 图形执行。

通常情况下,普通的 CUDA 应用程序会在这种情况下正常运行。正确检测到 CUDA GPU,CUDA 运行时处理与 NVIDIA GPU 上的 CUDA 相关的所有内容。

根据 Optimus 启发式,与 CUDA 无关的图形任务也将在 Intel 或 NVIDIA 设备上运行,此处不涉及详细信息。

但是,对于使用某种形式的图形“互操作”与 CUDA 的应用程序,可能需要对 Optimus 启发式进行一些修改。 CUDA/graphics interop requires CUDA“上下文”和图形“上下文”都建立在 NVIDIA GPU 上(为了这个问题,只有一个 NVIDIA GPU)。如果先建立图形上下文,而没有考虑到这一点,则可能在 Intel 设备上建立图形上下文,在这种情况下 CUDA 图形互操作将失败。

解决方案是强制在 NVIDIA 设备上为此类应用程序建立图形上下文,而 NVIDIA 显示驱动程序控制面板提供了一种机制 ("profiles") 来实现这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    相关资源
    最近更新 更多