【问题标题】:Access CUDA runtime with python使用 python 访问 CUDA 运行时
【发布时间】:2022-08-16 16:16:49
【问题描述】:

我发现以下代码可以通过 python 访问 CUDA 运行时,或者更确切地说,加载库来这样做:

libnames = (\"libcuda.so\", \"libcuda.dylib\", \"cuda.dll\")
for libname in libnames:
    try:
        cuda = ctypes.CDLL(libname)
    except OSError:
        continue
    else:
        break
else:
    return (0, 0, 0.0, \"Could not load CUDA library\")

这段代码在 Linux 上工作得很好,我也被告知在 Mac 上,但在 Windows 上它不会打开 CUDA.dll,说它找不到它。我的文件系统不包含CUDA.DLL,而是有cudart64_110.dllcufft64_10.dll 和其他随CUDA SDK 提供的(我现在安装了11.0、11.1 和11.4)。在 lib 文件夹中,有一个 cuda.lib。

我可以用 Windows 以某种方式做到这一点,还是必须使用 pyculib

  • 您所指的库不是“运行时”。它是 Cuda 驱动程序 API 库,它是 NVIDIA 驱动程序分发的一部分,而不是工具包。
  • 我手边没有windows机器,但上次我查看了windows中安装的GPU驱动程序,相关文件是nvcuda.dll而不是cuda.dll,它位于/位于C:\\Windows\\System32(对于一个适当的驱动安装)。因此,如果您没有类似的文件,则意味着 1. 您没有支持 CUDA 的 GPU 2. 您有支持 CUDA 的 GPU,但没有安装正确的驱动程序来启用 CUDA .从例如获取的驱动程序例如,Windows 更新可能没有安装此文件。如果您有支持 CUDA 的 GPU,建议安装来自 NVIDIA 来源的最新驱动程序。
  • 是的,这行得通。使用 nvcuda.dll 是问题所在,我使用的代码是错误的。那将是一个可以接受的答案;)

标签: python cuda


【解决方案1】:

如 cmets 中所述,CUDA 驱动程序 API 在 Windows 系统上称为 nvcuda.dll。该工具包附带一个用于链接目的的存根库,而实际库附带 NVIDIA 驱动程序包。

相反,我有 cudart64_110.dll、cufft64_10.dll

这两个库实际上是 CUDA 运行时 API 库。这是一个不同的库,具有与驱动程序 API 不同的 API 集。

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 2021-01-11
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多