蟒蛇如何选择cudatoolkit

时间:2020-02-18 00:07:04

标签: cuda anaconda cupy

我在多个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 version 10.2.89的env3中,我尝试使用命令pip install cupy-cuda102安装cupy库。 尝试执行此操作时出现以下错误。

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来安装cuda 10.1。 为什么找不到cudatoolkit 10.2?

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

2 个答案:

答案 0 :(得分:2)

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

它与CUDA工具包版本无关。

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

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

答案 1 :(得分:2)

这不是真正回答原始问题,而是后续问题:

可以直接通过anaconda直接安装

tensorflow和pytorch,而无需从nvidia明确下载cudatoolkit。它只需要安装gpu驱动程序。在这种情况下,未安装nvcc仍然可以正常工作。在这种情况下如何运作?

通常,Anaconda / Conda-Forge上的GPU软件包是使用Anaconda的新CUDA编译器工具链构建的。这样做的方式是将nvcc和朋友从CUDA Toolkit中的其余运行时库(cuFFT,cuSPARSE等)中分离出来。后者打包在cudatoolkit软件包中,作为run依赖项(用conda的术语表示)制成,并在安装诸如PyTorch之类的GPU软件包时安装。

然后,将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应用程序时,它们将使用安装在同一conda env中的cudatoolkit

相关问题