cuda - anaconda 如何挑选 cudatoolkit
问题描述
我有多个安装了不同 cuda 工具包的 anaconda 环境。
env1 有 cudatoolkit 10.0.130
env2 有 cudatoolkit 10.1.168
env3 有 cudatoolkit 10.2.89
我通过conda list
在每个环境上运行找到了这些。
当我这样做nvidia-smi
时,无论我在哪个环境中,我都会得到以下输出
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21 Driver Version: 435.21 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:01:00.0 On | N/A |
| 0% 42C P8 7W / 260W | 640MiB / 11016MiB | 2% Default |
+-------------------------------+----------------------+----------------------+
上面显示的 cuda 版本是否与 cuda 工具包版本相同?如果是这样,为什么在所有环境中都是一样的?
在 env3 中cudatoolkit version 10.2.89
,我尝试使用命令安装cupy库pip install cupy-cuda102
。尝试执行此操作时出现以下错误。
ERROR: Could not find a version that satisfies the requirement cupy-cuda102 (from versions: none)
ERROR: No matching distribution found for cupy-cuda102
我能够安装使用pip install cupy-cuda101
which is for cuda 10.1。为什么找不到 cudatoolkit 10.2?
我问这个问题的原因是,我cupy.cuda.cublas.CUBLASError: CUBLAS_STATUS_NOT_INITIALIZED
在运行深度学习模型时遇到错误。我只是想知道 cudatoolkit 版本是否与此错误有关。即使此错误与 cudatoolkit 版本无关,我也想知道 anaconda 如何使用 cudatoolkit。
解决方案
这并不是真正回答原始问题,而是后续问题:
tensorflow 和 pytorch 可以直接通过 anaconda 安装,无需从 nvidia 显式下载 cudatoolkit。它只需要安装 gpu 驱动程序。在这种情况下,未安装 nvcc 仍然可以正常工作。在这种情况下它是如何工作的?
通常,Anaconda/Conda-Forge 上的 GPU 包是使用 Anaconda 的新 CUDA 编译器工具链构建的。它的制作方式是nvcc
和朋友从 CUDA Toolkit 中的其余运行时库(cuFFT、cuSPARSE 等)中分离出来。后者被打包在cudatoolkit
包中,作为run
-dependency(在 conda 的术语中),并在您安装 GPU 包(如 PyTorch)时安装。
然后,GPU 包被编译、链接到cudatoolkit
并打包,这就是您只需要安装 CUDA 驱动程序而无需其他任何东西的原因。默认情况下,系统的 CUDA 工具包(如果有)会因为这种链接而被忽略,除非包(例如 Numba)有自己的方式在运行时查找 CUDA 库。
值得一提的是,安装的cudatoolkit
并不总是与您的驱动程序匹配。在这种情况下,您可以明确限制其版本(例如 10.0):
conda install some_gpu_package cudatoolkit=10.0
安装tensorflow的环境激活后会发生什么?conda 是否仅在激活环境时创建用于访问 cuda 库的环境变量?
激活环境时,Conda 总是设置一些环境变量。我不完全确定 tensorflow,但很可能在构建时,它链接到 CUDA 运行时库(cudatoolkit
换句话说)。因此,当启动 tensorflow 或其他 GPU 应用程序时,它们将使用cudatoolkit
安装在同一个 conda env 中的程序。
推荐阅读
- php - 如何在 .htaccess 中为我的 404 自定义页面添加规则
- python - 如何解决 MDNavigationRail 中侧面图标的工作
- node.js - 错误是:
无法发布 /
- javascript - DIScord.js UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
- typescript - 如何从错误检查中排除非项目目录?
- h2 - Quarkus 与 H2 内存数据库,同时在启动时提供堆空间
- pytorch - 太多的值无法解包(预期为 2)Pytorch
- botframework - 使用 MS 机器人框架在团队机器人中获得多个响应
- python - keyboard.is_pressed() 之后的输入包含额外的前缀
- r - 循环清洗数据集 (R)