Ubuntu下配置tensorflow gpu开发环境

https://tensorflow.google.cn/install/gpu

安装NVIDIA驱动

https://blog.csdn.net/wf19930209/article/details/81877822

使用命令行:

ubuntu-drivers devices
sudo ubuntu-drivers autoinstall

然后重启就可以了
这样就安装完了最新版的NVIDIA驱动

安装cuda

https://developer.nvidia.com/cuda-11.2.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=2004&target_type=runfilelocal

这里我试了runfile、deb(local)、deb(network)三种方法,其中第二种总是自动卸载我安装的最新版的nvidia驱动,然后下载一个460版本的,然后这个🚮货还自己装不好,弄得我电脑显示都不正常了。。。每次都重新sudo apt remove cuda 然后 sudo apt autoremove 把失败的包都删了;第三种每次都下最新版的cuda,然而谁都知道tf不支持最新版的cuda 11.6,只支持到11.2,安完还得删了重新按11.2版本的

第一种经过反复摸索和查资料,使用下面的方法是可以的:

https://blog.csdn.net/catpico/article/details/119492795

去/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.]就可以了
来,开始我的全景分割研究!!!嘻嘻嘻

posted @ 2022-02-27 09:45  IamIron-Man  阅读(116)  评论(0)    收藏  举报