下面的话是我的观察和思考,请多多批评。
TensorFlow 要用 CUDA、CUDA toolkit、CUDNN,看好版本的对应关系再安装,磨刀不误砍柴工。
1)NVIDIA Panel 里显示的NVCUDA.DLL不是安装的CUDA版本,而是目前显卡驱动所能支持的最高 CUDA 版本,
可以理解成是CUDA 的 Driver,现在若是更新驱动它是可能发生变化的,因为驱动升级了,算整体驱动升级,CUDA驱动也会升级
2)NVIDIA GPU Computing Toolkit != cudatoolkit,前者是NVIDIA的术语,译为 GPU计算工具(组件),它包括CUDA,
如果只装了CUDA,那么就是只包括CUDA;后者是 Anaconda的术语,是一个用来支持 PyTorch的工具包,是CUDA的子集,
所以不用装CUDA就能使用PyTorch(或者说,PyTorch的使用不需要全部的CUDA的功能)
3)欲在GPU上使用TensorFlow,CUDA 和 CUDNN(CUDA Deep Neural Network)都是要自己手动装的(除非使用 NVIDIA installer进行过全套安装,但我没试过)
4)顾名思义,CUDNN是基于CUDA的,所以CUDA是比它底层的东西(虽然也是软的)
In conclusion, 之所以会报错没有 cudart64_110.dll,是因为本来我也没装 CUDA,而是把NVIDIA 显卡驱动里的CUDA Driver,后来又是之前学习PyTorch时安装的cudatoolkit,当成了CUDA。并且就算TensorFlow用不到全部的CUDA功能,也应该对应的是至少 11.2 的CUDA版本,而cudatoolkit是个 10.2 版本(动态链接库是cudart64_102.dll),低得多。
猜想,如果删掉原来装的 这个cudatoolkit,则使用PyTorch仍然没问题。
再猜,如果原来装的cudatoolkit版本足够新,那么使用TensorFlow应该也可以通过CUDA的动态链接库检查,但是由于给PyTorch 用的这个cudatoolkit没有CUDNN,所以照样没法通过这下一步的检查。
-----------------
当然,上述猜想可能性也不大。更有可能的是,TensoFlow只检查系统的CUDA是否存在,PyTorch只检查Anaconda环境(or Python环境)的CUDA是否存在,我不想再尝试了,循规蹈矩改装哪里装哪里就好。
--------------------
一句话,NVIDIA Panel的CUDA,只是CUDA Driver允许安装的CUDA的最高版本号,Driver向下兼容,所以安装低版本CUDA没问题。
再来一句,C盘里的是大环境,Anaconda里是小环境,都是环境,都可以放 CUDA,只不过正常情况下是放在大环境(C盘,也就是自己独立安装),而Anaconda里的运行环境也行。
最后一句,独立安装费时费力,使用conda和pip安装在Anaconda某环境里简单(但没试过用conda或者pip安装cuda和cudnn)
仅是个人安装使用经历所得感悟,请多指教,谢谢。
CUDA与TensorFlow、PyTorch共存的问题与解决方案
本文探讨了CUDA、CUDA toolkit、CUDNN在TensorFlow和PyTorch安装中的关系和常见问题。作者指出,NVIDIA Panel显示的NVCUDA.DLL与实际安装的CUDA版本不同,且TensorFlow需要手动安装CUDA和CUDNN。PyTorch则可以通过cudatoolkit使用部分CUDA功能。错误提示 cudart64_110.dll 缺失源于低版本的cudatoolkit。作者建议,避免问题的最佳实践是确保CUDA版本与库相匹配,并在正确环境中安装所需组件。
1606

被折叠的 条评论
为什么被折叠?



