Cuda安装与多版本管理, ubuntu16.04
在使用caffe和tensorflow时可能要同时用到cuda9.0和cuda8.0两个版本。
cuda8.0下载网址为:https://developer.nvidia.com/cuda-80-ga2-download-archive
cuda9.0 下载网址为: https://developer.nvidia.com/cuda-90-download-archive
其他版本相应修改版本号应该可以找到。
下载runfile 文件按照提示选择即可,提示装驱动就装一下,注意装完驱动可能要重启电脑生效。装了高级驱动再装低版本cuda应该不需要再装驱动。
比如cuda8.0放在/usr/local/cuda8_0, cuda9.0放在/usr/local/cuda9_0.
然后 下载libcudnn ,需要注册账号,注意选择版本。比如tar.gz解压include和lib文件夹里的东西分别到前面cuda文件夹对应的位置
然后多版本运行的关键在于:环境变量
查看变量:
echo $PATH
echo $LD_LIBRARY_PATH
可以在~/.bashrc 写入环境变量, 写完source ~/.bashrc即可激活。比如:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
这里主要就是先看看现在环境变量是啥,然后用这些命令修改下,比如cuda8.0改成9.0之类的。
另外这里调整的环境变量并不能立刻在其他session生效,可能还要重启一下,或者在其他session调用source ~/.bashrc
当然如果只是临时修改环境变量也可以直接bash运行export命令。
如果要在python脚本中修改环境变量,可以:
os.environ['LD_LIBRARY_PATH'] = '/usr/local/cuda-8.0/lib64'
这样是无效的:
os.system(‘export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH’)
猜想是由于这是新开一个子进程,临时环境变量无法影响当前进程。
总结
在caffe编译时,先在Makefile.config里修改cuda路径, 加上正确的环境变量应该就可以。还有Makefile.config里还有include和lib路径,注意hdf5的路径。
补充:
今天忽然又找不到 libcudart.so.8.0, 确认环境变量无误后,还需要;
sudo ldconfig /usr/local/cuda-8.0/lib64
之后解决,作用大概是动态链接库管理。
参考:
libcudart.so.8.0: cannot open shared object file: No such file or directory #4944
https://github.com/BVLC/caffe/issues/4944