Cuda 设备上的 NumbaPro 通过 ssh 连接

NumbaPro on Cuda device over ssh connection

我正在使用 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:

如何解决这个问题?

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

有一些解决方法:

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

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