Ubuntu下配置tensorflow gpu开发环境
安装NVIDIA驱动
使用命令行:
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
然后重启就可以了
这样就安装完了最新版的NVIDIA驱动
安装cuda
这里我试了runfile、deb(local)、deb(network)三种方法,其中第二种总是自动卸载我安装的最新版的nvidia驱动,然后下载一个460版本的,然后这个🚮货还自己装不好,弄得我电脑显示都不正常了。。。每次都重新sudo apt remove cuda 然后 sudo apt autoremove 把失败的包都删了;第三种每次都下最新版的cuda,然而谁都知道tf不支持最新版的cuda 11.6,只支持到11.2,安完还得删了重新按11.2版本的
第一种经过反复摸索和查资料,使用下面的方法是可以的:
去/usr/local目录下把带cuda的文件夹删除,然后运行下面指令,cuda的run文件名改成自己在官网最新下载的哈
sudo sh cuda_11.2.0_460.27.04_linux.run --toolkit --silent --override
然后把bashrc文件改一改,才可以使用nvcc -V:
sudo gedit ~/.bashrc
然后在最后加上
export PATH="/usr/local/cuda-11.2/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH"
就大功告成啦!!!
测试一下 nvcc -V,显示cuda版本11.2,666~
安装cudNN
https://developer.nvidia.com/rdp/cudnn-archive
注册下载8.1.0 for cuda11.2的就行
https://blog.csdn.net/zhouchen1998/article/details/107778087
切换到cudnn文件所在目录,通过tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz命令解压文件,会得到一个cuda文件夹,逐一执行下面的命令进行cudnn的安装。
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
完成后,通过下面的命令查看安装情况,如果结果如下图逐行显示版本号,则安装成功。
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
很可惜我没显示,但是我也能用
装tensorflow
之前先装了tensorflow后再装的这些包,然后一直不能用,看一片博客都是最后装tensorflow,于是我就又建了个anaconda虚拟环境然后重新装了tensorflow,然后跑测试代码:
import tensorflow
tensorflow.config.list_physical_devices('GPU')
能输出gpu:0,而不是[]这个空集合,然后再进一步:
import tensorflow as tf
print('GPU', tf.test.is_gpu_available())
tf.compat.v1.disable_eager_execution()
with tf.device('/cpu:0'):
a = tf.constant([1.0, 2.0, 3.0], shape=[3], name='a')
b = tf.constant([1.0, 2.0, 3.0], shape=[3], name='b')
with tf.device('/gpu:1'):
c = a + b
# 注意:allow_soft_placement=True表明:计算设备可自行选择,如果没有这个参数,会报错。
# 因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。
sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(allow_soft_placement=True, log_device_placement=True))
# sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))
sess.run(tf.compat.v1.global_variables_initializer())
print(sess.run(c))
能输出[2. 4. 6.]就可以了
来,开始我的全景分割研究!!!嘻嘻嘻