巨蟒是如何挑选cudatoolkit的

巨蟒是如何挑选cudatoolkit的,cuda,anaconda,cupy,Cuda,Anaconda,Cupy,我在anaconda的多个环境中安装了不同的cuda工具包 env1具有cudatoolkit 10.0.130 env2有cudatoolkit 10.1.168 env3具有cudatoolkit 10.2.89 我通过在每个环境上运行conda list找到了这些 当我执行nvidia smi时,无论我处于哪个环境,我都会得到以下输出 +-----------------------------------------------------------------------------

我在anaconda的多个环境中安装了不同的cuda工具包

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工具包版本相同? 如果是这样,为什么在所有环境中都是一样的

在拥有
cudatoolkit版本10.2.89
的env3中,我尝试使用命令
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
我能够使用CUDA10.1的
pip安装cupy-cuda101
进行安装。 为什么找不到cudatoolkit 10.2

我问这个问题的原因是,当我运行深度学习模型时,我得到一个错误
cupy.cuda.cublas.CUBLASError:cublas_STATUS_NOT_INITIALIZED
。我只是想知道cudatoolkit版本是否与此错误有关。即使此错误与cudatoolkit版本无关,我也想知道anaconda如何使用cudatoolkit

上面显示的cuda版本是否与cuda工具包版本相同

它与CUDA工具包版本无关

如果是这样的话,为什么在所有的环境中都是一样的呢


因为它是驱动程序的属性。它是系统中活动驱动程序支持的最大CUDA版本。当你尝试使用CUDA 10.2时,这就是为什么什么都不起作用。您的驱动程序需要更新以支持CUDA 10.2。

这并不是真正回答最初的问题,而是后续问题:

tensorflow和pytorch可通过anaconda直接安装,无需从nvidia明确下载cudatoolkit。它只需要安装gpu驱动程序。在这种情况下,nvcc未安装,但仍能正常工作。在这种情况下它是如何工作的

通常,Anaconda/Conda Forge上的GPU包是使用Anaconda新的CUDA编译器工具链构建的。它的制作方法是将
nvcc
和friends从CUDA工具包中的其他运行库(cuft、cuSPARSE等)中分离出来。后者打包在
cudatoolkit
包中,作为
run
-依赖项(用康达的术语来说),并在安装诸如PyTorch之类的GPU包时安装

然后,GPU包被编译、链接到
cudatoolkit
,并打包,这就是您只需要安装CUDA驱动程序而不需要安装其他驱动程序的原因。由于此链接,系统的CUDA工具包(如果有)在默认情况下被忽略,除非包(如Numba)有自己的方式在运行时查找CUDA库

值得一提的是,安装的
cudatoolkit
并不总是与您的驱动程序匹配。在这种情况下,可以显式约束其版本(例如10.0):

conda安装一些\u gpu\u包cudatoolkit=10.0
当安装tensorflow的环境被激活时会发生什么?conda是否在激活环境时创建用于访问cuda库的环境变量


激活环境时,Conda始终设置一些环境变量。我不完全确定tensorflow,但最有可能的是,在构建时,它链接到CUDA运行库(
cudatoolkit
)。因此,在启动tensorflow或其他GPU应用程序时,他们将使用安装在同一conda env中的
cudatoolkit

让我补充两件事:1cudatoolkit仅附带CUDA运行库。不包括驱动程序和nvcc。2. <代码>cupy-cuda102尚未提供。这是一个团队正在研究的问题。@LeoFang tensorflow和pytorch可以直接通过anaconda安装,而无需从nvidia显式下载cudatoolkit。它只需要安装gpu驱动程序。在这种情况下,nvcc未安装,但仍能正常工作。在这种情况下它是如何工作的?当安装tensorflow的环境被激活时会发生什么?conda是否在激活环境时创建用于访问cuda库的环境变量?感谢您澄清本地cuda安装和cudatoolkit anaconda安装之间的区别。然而,有一个名为“cupy”的软件包使用cuda来加速numpy计算。如果启动python终端,导入cupy并运行cupy.show_config(),它将显示CUDA根。我可以通过修改.bashrc文件来更改路径中的cuda位置,cupy将反映新位置。因此,看起来即使anaconda的cudatoolkit是一个“cuda自身”,cupy软件包还是指本机安装的cuda。这是对的吗?@aquagremlin很抱歉我没有听到你的评论。你问对人了我是CuPy的conda forge配方维护者之一。您提出的问题目前正在解决:对于conda forge CuPy,
CuPy.show_config()
无法正确打印安装在您的conda env中的
cudatoolkit
的路径(尽管链接正确,但实际上使用的是
cudatoolkit
,而不是您的本地CUDA安装),请参阅。因此,你的问题的答案是,就目前而言,是的。