【问题标题】:NumbaPro on Cuda device over ssh connectionCuda 设备上的 NumbaPro 通过 ssh 连接
【发布时间】:2015-08-06 15:26:18
【问题描述】:

我正在使用 Python/NumbaPro 在 Windows 机器上使用我的 CUDA 兼容 GPU。我使用 Cygwin 作为 shell,并且在 cygwin 控制台中找到我的 CUDA 设备没有问题。我用简单的命令测试

    numbapro.check_cuda()

但是当我通过 OpenSSH 连接到盒子时(作为我的 Cygwin 设置的一部分),我收到以下错误:

numba.cuda.cudadrv.error.CudaSupportError: Error at driver init:
Call to cuInit results in CUDA_ERROR_NO_DEVICE:

如何解决这个问题?

【问题讨论】:

  • sshd 是否作为服务运行,如果是,那是你的问题
  • 谢谢。我已将 sshd 上下文从 Windows 服务更改为命令行,现在与我的其他用户在相同的用户上下文中运行。这会导致一个新错误:“raise NotImplementedError('cannot determine number of cpus')” - 为什么会这样?
  • 这实际上与 CUDA 无关,但我认为 this 可能会回答这个问题(请参阅最后一个答案)。
  • 再次感谢!它现在飞起来了!
  • 如果您接受,我会为问题添加一个简短的摘要答案,以便我们可以将其从未回答列表中删除

标签: python ssh cuda numba-pro


【解决方案1】:

造成这种情况的主要原因是 Windows 服务会话 0 隔离。当您通过在会话 0 中运行的服务(例如 sshd 或 windows 远程桌面)运行任何应用程序时,机器的本机显示驱动程序不可用。对于 CUDA 应用程序,这意味着您在运行时遇到无可用设备错误,因为您用于登录的 sshd 作为服务运行,并且没有可用的 CUDA 驱动程序。

有一些解决方法:

  1. 将 sshd 作为进程而不是服务运行。
  2. 如果您有兼容的 GPU,请使用 TCC 驱动程序而不是 GPU 显示驱动程序。

关于第二个问题,您看到的 Python 运行时错误来自 multiprocessing 模块。从this question 看来,根本原因可能是未设置NUMBER_OF_PROCESSORS 环境变量。您可以使用该线程中的一种解决方法来解决该问题

【讨论】:

  • 我认为使用最近的 NVIDIA Windows 驱动程序(例如 353.30)测试这(会话 0 隔离限制)是否仍然正确会很有趣。 NVIDIA 已经解决了其中的一些限制。
猜你喜欢
  • 2016-04-12
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 2019-12-31
  • 2011-10-31
相关资源
最近更新 更多