我在多个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。
答案 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
。