推荐使用 conda 安装 TensorFlow,安装 GPU 版本的 TensorFlow 时会同时安装对应的 CUDA 和 cuDNN。下面的问题也就不会产生。

TensorFlow 2.0 for Linux 使用时报错:(cuDNN 版本低了)

E tensorflow/stream_executor/cuda/cuda_dnn.cc:319] Loaded runtime CuDNN library: 7.4.1 but source was compiled with: 7.6.0.  CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version. If using a binary install, upgrade your CuDNN library.  If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.
...
tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [Op:Conv2D]

解决方法:升级 cuDNN。TF 2.0 和 CUDA 10.0、cuDNN 7.6.4 是匹配的。(如果是用 conda,那么以下都不需要,直接删除 cudnn 再安装对应版本)

root 用户

Linux 服务器的用户如果有 root 权限,那直接删除原来的 cuDNN,然后再重装新版本。

删除已有的 cuDNN:

sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*

进入 cuDNN 解压后的 cuda 文件夹,安装新版本:

sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/

建立软连接:(以 7.6.4 版本为例)

cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.6.4
sudo ln -sf libcudnn.so.7.6.4 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig

非 root 用户

如果没有 root 权限,一种做法是自己重新装 CUDA 和 cuDNN。

在用户目录下安装 CUDA

从官网 https://developer.nvidia.com/cuda-10.0-download-archive 下载 ubuntu 使用的 cuda_10.0.130_410.48_linux.run,安装指令 sh cuda_10.0.130_410.48_linux.run,之后:

# 按q退出协议说明. 

Do you accept the previously read EULA?
accept/decline/quit: accept Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: no Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: yes # 改成自己的用户名
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]: /home/wuliyttaotao/cuda-10.0 Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y # 使用默认路径,回车
Enter CUDA Samples Location
[ default is /home/wuliyttaotao ]:

配置 cuDNN

下载完 cuDNN,可能发现后缀是 .solitairetheme8,直接将这个后缀改成 .tgz 即可解压。

复制 cuDNN 文件到 CUDA 安装目录:(cuDNN 解压到 ~/cuda 目录了,~/cuda-10.0 为自己设定的 CUDA 安装目录,~ 代表 /home/wuliyttaotao)

cp ~/cuda/include/cudnn.h ~/cuda-10.0/include
cp ~/cuda/lib64/lib* ~/cuda-10.0/lib64 chmod a+r ~/cuda-10.0/include/cudnn.h ~/cuda-10.0/lib64/libcudnn*

建立软连接:

cd ~/cuda-10.0/lib64
ln -sf libcudnn.so.7.6.4 libcudnn.so.7
ln -sf libcudnn.so.7 libcudnn.so
ldconfig -v

配置用户环境变量

修改 ~/.bashrc 文件,将下面两行加进去:(将 wuliyttaotao 改成自己的用户名)

export PATH=/home/wuliyttaotao/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/home/wuliyttaotao/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存 ~/.bashrc 文件后,source ~/.bashrc 使其生效。

References

Linux之cudnn升级方法 -- ZONG_XP

非root用户在linux下安装多个版本的CUDA和cuDNN(cuda 8、cuda 10.1 等)-- 随性拂尘倾心

【tf.keras】Linux 非 root 用户安装 CUDA 和 cuDNN的更多相关文章

  1. 非root用户安装cuda和cudnn

    1.根据自己的系统在官网下载cuda (选择runfile(local)) https://developer.nvidia.com/cuda-downloads 2.进入下载目录,并执行 sh cu ...

  2. linux非root用户安装jdk1.8

    如题,先到 Oracle 官方网站 下载1.8版本的 JDK 压缩包(jdk-8u221-linux-x64.tar.gz)到本地(如D盘的soft目录),然后开始进入linux的非root用户(如w ...

  3. linux非root用户安装ncurses-devel依赖

    很明显,如果我们通过yum或rpm下载安装,始终无法绕开root用户,除非我们不用yum或rpm.嗯,我们直接用源码安装.下载源码包,到http://ftp.gnu.org/gnu/ncurses/我 ...

  4. linux非root用户安装nginx

    先到官网http://nginx.org/en/download.html下载最新稳定版源码包,目前是1.16.1: 下完后通过rz上传至wlf用户soft目录下,退回上一级目录解压: $ cd so ...

  5. linux非root用户安装rabbitmq

    因为rabbitmq是用erlang语言写的,所以装rabbitmq前第一步得先装erlang. 我们到erlang官网https://www.erlang.org/downloads下载安装包,最新 ...

  6. linux非root用户安装4.0.14版本redis

    先到官网https://redis.io/download下安装包,现在最新是5.0.5版本,可惜点击下载后被windows禁了,那就下4版本的,往下看Other versions的Old(4.0), ...

  7. linux非root用户安装5.7.27版本mysql

    先下安装包,到mysql官网https://dev.mysql.com/downloads/mysql/选好安装包版本.操作系统类型(默认是最新版本,点击右边链接Looking for previou ...

  8. Linux非root用户安装jdk和tomcat

    转载自:http://blog.csdn.net/wuyigong111/article/details/17410661,进行部分修改 创建一个用户 sgmm,并在其用户目录里面安装 jdk和tom ...

  9. linux 非root用户安装nginx

    第一步:首先下载依赖包 下载地址 pcre(www.pcre.org),zlib(www.zlib.org),openssl(www.openssl.org) 第二步:上传那个nginx的安装包 下载 ...

随机推荐

  1. H3C OSI参考模型层次结构

  2. xUtils框架的介绍(二)

    xUtils中有四大组件可以供我们使用,分别是ViewUtils.HttpUtils.BitmapUtils以及DbUtils.如果你没能先读一下我的上一篇文章,那么请你移步过去先整体了解一下,再回过 ...

  3. H3C Inverse ARP

  4. Python--day48--ORM框架SQLAlchemy

    SQLAlchemy: SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执 ...

  5. Vue实现同级组件的通信

    一.文件结构 二.vue.js 打开此链接 https://cdn.bootcss.com/vue/2.6.10/vue.js 复制粘贴页面的所有内容 三.index.html <!DOCTYP ...

  6. Talk is cheap. Show me the code.

    Talk is cheap. Show me the code. -- Linux创始人 Linus Torvalds 2000-08-25 Stay hungry Stay foolish -- 乔 ...

  7. H5 网络状态接口

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 分布式全局唯一ID

    方案一.UUID UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能的数 ...

  9. Codeforces Round #561 (Div. 2)

    C. A Tale of Two Lands 题意: 给出 n 个数,问有多少点对(x,y)满足 |x-y| ≤ |x|,|y| ≤ |x+y|: (x,y) 和 (y,x) 表示一种答案: 题解: ...

  10. EJB实例

    两种管理机制: 无状态bean使用实例池技术管理bean 有状态bean使用激活(activation)管理bean 内存对象序列化到磁盘 磁盘反序列化到内存