【问题标题】:Does PyInstaller include CUDAPyInstaller 是否包含 CUDA
【发布时间】:2020-03-23 06:12:09
【问题描述】:

我正在编写一个使用 tensorflow-gpu (1.14.0) 并使用 PyInstaller 3.5 将此脚本转换为可执行文件的 Python 脚本(我使用 Python 3.7.3)。我使用的是 CUDA 10.0 和 cuDNN 7.6.1,我的显卡是 NVIDIA GeForce GTX 960M。我最近卸载了 CUDA 以测试 Python 脚本的可执行文件是否仍然运行,令人惊讶的是它仍然通过 GPU 运行,当我现在直接运行 Python 脚本时它不起作用。

我的问题是,这个可执行文件可以在没有 CUDA 工具包但有支持 CUDA 的显卡的系统上运行吗?

【问题讨论】:

  • “没有 CUDA”是什么意思?没有 CUDA 工具包?没有 CUDA 驱动程序?
  • 我的印象是 CUDA 工具包包含 CUDA 驱动程序?无论如何,我说的是工具包。
  • 在某些平台上可以,但卸载工具包不会删除驱动程序。在那种情况下,我猜 PyInstaller 会生成静态链接的可执行代码(CUDA 在大多数平台上也支持)
  • 我在 Windows 10 上运行所有东西,并通过 nvcc -V 命令验证了 CUDA 工具包的正确卸载。由于我依赖于 tensorflow-gpu 的 Python 脚本在卸载后不再运行,我是否可以假设驱动程序也被卸载了?
  • 没有。卸载工具包会删除 Python 脚本所依赖的动态库,从而破坏它们。但是您的可执行文件可能具有链接到其中的所有 CUDA 库的静态版本,因此它不受影响。我从未听说过 PyInstaller,也不知道它是如何工作的,但这是我能想到的唯一解释。

标签: tensorflow cuda pyinstaller cudnn


【解决方案1】:

根据this documentation,PyInstaller 将制作并存储 Python 代码在构建单个可执行文件时所依赖的所有依赖外部库的私有副本。

因此,可以安全地假设您的可执行文件运行与 CUDA 工具包的安装状态无关,因为它在内部拥有必要的 CUDA 库的完整私有副本,运行该可执行文件时会使用该副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2012-07-04
    相关资源
    最近更新 更多