Cuda 7.5和Visual Studio 2013:一些例子工作,但其他返回cudaErrorDevicesUnav



我最近在Windows 8.1中安装了CUDA 7.5和Visual Studio 2013。在测试示例之后,它可以完美地运行于某些示例中,例如Mandelbrot或matrixMul。但是,在测试行军立方体和双边过滤等示例时,我得到了以下错误:

"CUDA Runtime API error 46: all CUDA-capable devices are busy or unavailable"

我已经测试了"deviceQuery",它工作了。此外,我在带有Geforce GT630m的华硕笔记本电脑中使用CUDA。我试过将计算模式设置为DEFAULT,但是没有任何区别。

大多数带有英特尔CPU的现代windows笔记本电脑,包括NVIDIA"分立"GPU,也在合作安排中使用英特尔"集成"图形,其中NVIDIA品牌为Optimus。

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

通常,普通的CUDA应用程序将在此场景中正常运行。CUDA GPU被正确检测,CUDA运行时处理所有与CUDA相关的NVIDIA GPU。

与CUDA无关的图形任务也将在英特尔或NVIDIA设备上运行,根据Optimus启发式,其中的细节在这里不相关。

然而,对于使用某种形式的图形与CUDA"互操作"的应用程序,可能需要对Optimus启发式进行一些修改。CUDA/图形互操作要求CUDA"上下文"和图形"上下文"都建立在NVIDIA GPU上(为了这个问题的目的,只有一个NVIDIA GPU存在)。如果首先建立图形上下文,并且没有考虑到这一点,那么图形上下文可能会在英特尔设备上建立,并且CUDA图形互操作将在这种情况下失败。

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

最新更新