每次部署环境时都要安装CUDA、cuDNN,并确保tensorflow与CUDA、cdDNN版本对应,这些操作真心繁琐且枯燥。思考了一下,从应用调用层面出发:
export LD_LIBRARY_PATH=`pwd`:/usr/local/cuda9.0
采用命令模型运行时,我们大部分应用都是采用上述的环境变量形式注册动态库;若IDE是pycharm,只要在‘Edit Configurations’中‘Defaults’选项中选择‘Python’,将上面的代码复制到‘Environment variables’中即可。
然后我们下载CUDA、cuDNN动态库,可以复制别人安装好的so文件即可,只要6个so文件即可:
libcublas.so.9.0.103
libcudart.so.9.0.103
libcudnn.so.7.1.4
libcufft.so.9.0.103
libcurand.so.9.0.103
libcusolver.so.9.0.103
文件名称的so后面是版本号。如图我拷贝了CUDA9.0.103+cuDNN7.1.4
将上图的cuda9.0文件夹拷贝到新机器的‘usr/local/’文件夹中,在终端运行run.sh脚本自动生成软链接,这样新机器就可以的CUDA、cdDNN就配置好了。
贴下run.sh脚本代码:
#!/bin/bash
# 动态库
so=(
`pwd`/libcublas.so.9.0.103
`pwd`/libcudart.so.9.0.103
`pwd`/libcudnn.so.7.1.4
`pwd`/libcufft.so.9.0.103
`pwd`/libcurand.so.9.0.103
`pwd`/libcusolver.so.9.0.103
)
# 软链接
link=(
`pwd`/libcublas.so.9.0
`pwd`/libcudart.so.9.0
`pwd`/libcudnn.so.7
`pwd`/libcufft.so.9.0
`pwd`/libcurand.so.9.0
`pwd`/libcusolver.so.9.0
)
# 删除旧的软连接
for link_f in ${link[*]}
do
if [ -f $link_f ];then
rm $link_f
fi
done
# 创建新的软链接
for ((i=0;i<6;i++))
do
echo ${so[${i}]}
if [ -f ${so[${i}]} ];then
ln -s ${so[${i}]} ${link[${i}]}
fi
done
注意,若拷贝的版本号不一致需要在run.sh脚本中修改下版本号。
方法总结:
1、将CUDA、cuDNN的6个so文件复制到新机器的 /usr/local/cuda 目录下
2、在 /usr/local/cuda 目录下运行 run.sh 脚本生成软链接
3、配置环境变量:也就是一开始说的命令运行和pycharm运行的方式
提供一个so下载:CUDA9.0.103+cuDNN7.1.4
链接: https://pan.baidu.com/s/1aAXIkHgoI-liZlXPdosAbg
提取码: srnn
里面包含了run.sh脚本。