今日在安装tensorflow的时候遇见不能使用gpu的情况,经过一顿费劲网上搜集资料,发现根本就没有人说明白这个事情,特此做个笔记,把这个报错一次性说明白,一是为了给自己做个记录,二是也希望能帮助大家
首先,基本高版本的tensor flow都能兼容低版本的cuda。所以不用相信什么cuda的版本一定要死死的匹配上tf的版本。
机器环境:cuda 11.0
网上查了半天,说只能用2.4.0 , 2.5.0 安装了,发现也用不了,报这个错误
发现是tf在加载时少了个文件,其实这个错误是因为cuda 11.0的问题,因为这个是11版本的第一个版本 ,11.0嘛。所以它的大部分.so文件都是.10的。没错,cuda 11.0本身就没有这个文件 。所以大家第一步,一定要先去搞一个这个文件。libcusolver.so.11
1.可以全局搜一下,很多包会有这个文件,docker啊啥的,有的镜像也会有
2.从别的服务器cp一个过来也可以,要不就网上下一个啥的,这个文件烂大街,不难搞
然后,把它放到/usr/local/cuda/lib64 这个目录中,这个目录是专门存放这类文件的地方
其次:
tf是不知道你放到哪里的,它只会从 $LD_LIBRARY_PATH 这个变量的地址中找这个屌文件,但是大家可以echo一下,会发现,没错,连这个屌地址都没有
如果是虚拟环境 要conda activate 进去这个虚拟环境 ,要给这个环境配变量值
将$LD_LIBRARY_PATH 变量增加刚才放入的地址
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:/usr/local/lib:$LD_LIBRARY_PATH
基本流程是这样
原理基本就是这样,知道了原理,解决起来也很清晰明了,就不明白为啥好多人说不明白这个事,希望有能帮助到看到这个帖子的人吧