Ubuntu20.04安装CUDA、cuDNN、tensorflow2可行流程(症状:tensorflow2在RTX3090上运行卡住)

最近发现我之前在2080ti上运行好好的代码,结果在3090上运行会卡住很久,而且模型预测结果完全乱掉,于是被迫研究了一天怎么在Ubuntu20.04安装CUDA、cuDNN、tensorflow2。

1.安装CUDA(包括CUDA驱动和CUDA toolkit,注意此toolkit和通过conda或pip安装的cudatoolkit不是一个东西)

谷歌搜索"ubuntu install CUDA11.0"

打开,依次选择:

运行下面的第一句指令下载CUDA安装包:

接着运行第二个指令开始安装,等待提示,按步骤选择就行,主要是下面这一步,如果你已经安装了很高版本的CUDA Driver了的话,就没必要选他了。

接着,需要配置一下环境变量,具体就是在根目录的.bashrc中的末尾添加两行代码

具体操作:终端中输入"vim .bashrc",先输入i进入编辑模式,在末尾添加下面两行,其中具体是填写cuda-11.0还是cuda,这要看你的/usr/local里面的文件夹是cuda还是cuda-11.0,我的话因为装了好多个版本,所以有cuda、cuda-11.0、cuda-11.2等等,所以需要分清楚。添加之后,点击”Esc“,输入“:wq”保存并退出。

好了,CUDA就装好了,可以重启电脑后,通过ncvv -V指令看一下CUDA版本,如果最后一行显示11.0就说明装好了。

说明一下,通过ncvv -V显示的CUDA版本和nvidia-smi显示的版本会不一致,这不影响我们使用。

2.安装cuDNN

谷歌搜索cudnn archive

点击进入,选一个既满足cuDNN8.0也满足CUDA11.0的选项,点开,下载linux_x86这个

就会下载一个tgz压缩包

使用指令tar -zxvf cudnn-11.0-linux-x64-v8.0.2.39.tgz进行安装,安装完成后,会在旁边生成一个cuda文件夹,里面都是cudnn的文件。

然后,需要手动将其中一些文件复制到./usr/local/cuda-11.0里面

1. cp cuda/lib64/* /usr/local/cuda-11.0/lib64/

2. cp cuda/include/* /usr/local/cuda-11.0/include/

好了,cuDNN也装完了。

3. 安装tensorflow,这个是最没技术含量的了

只需要写对版本就行,我这一套操作流程是参考了从源代码构建  |  TensorFlowicon-default.png?t=N7T8https://tensorflow.google.cn/install/source?hl=zh-cn#linux

里面“经过测试的构建配置”下“GPU”里面给出的一种已经被验证的组合:

所以,只需要pip install tensorflow==2.4.0就大功告成了。

我们运行一下

import tensorflow as tf
print(tf.__version__)
print('GPU', tf.test.is_gpu_available())
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))

或者运行一下

python3 -c "import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'; import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.list_physical_devices('GPU')))"

大功告成了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/127207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gradle与maven

Gradle 和 Maven 都是流行的构建工具,通常用于构建和管理 Java 和 Android 项目。它们都可以自动下载依赖库、编译代码、运行测试、打包和发布等。 以下是对 Gradle 和 Maven 的介绍: Gradle: Gradle 是一个基于 Groovy 和 Kotlin 的构建自…

(笔记)Kotlin——Android封装ViewBinding之二 优化

0. 在app模块的build.gradle文件中添加如下配置开启ViewBinding android {.......viewBinding {enabled true}} 1. 新建一个Ext.kt文件 添加两个扩展函数&#xff0c;分别对应Activity和Fragment inline fun <T : ViewBinding> AppCompatActivity.viewBinding(cross…

ajax-axios发送 get请求 或者 发送post请求带有请求体参数

/* axios v0.21.1 | (c) 2020 by Matt Zabriskie */ !function(e,t){"object"typeof exports&&"object"typeof module?module.exportst():"function"typeof define&&define.amd?define([],t):"object"typeof export…

【WinForm详细教程四】WinForm中的ProgressBar 、ImageList和ListView控件

文章目录 1.ProgressBar2. ImageList3.ListView控件 1.ProgressBar 用于显示某个操作的进度。 属性&#xff1a; Value: 表示当前进度条的值&#xff0c;其范围由Min和Max决定。Step: 设置每次调用PerformStep()方法时增加的步长。MarqueeAnimationSpeed: 在Style设置为Marq…

RabbitMQ 运维 扩展

1、集群管理与配置 1.1、集群搭建 关于Rabbitmq 集群的搭建&#xff0c;详见以下文章。简单说来就是将多个单机rabbitmq服务&#xff0c;通过给到一致的密钥&#xff08;.erlang.cookie&#xff09;并且开放rabbitmq服务的 25672 端口&#xff0c;允许多节点间进行互相通讯&am…

iptables 与 firewalld

iptables 一、主机型&#xff08;包过滤防火墙&#xff09; 1、简介&#xff1a; 包过滤型防火墙是一种网络安全设备或软件&#xff0c;它工作在 2、3、4 层&#xff0c;通过检查网络数据包的源地址、目标地址、协议、端口等信息&#xff0c;根据预定义的规则来决定是否允许…

ip划分与私公网ip、ip的传递

报文问路&#xff1a;1、不知道跳转默认路由器&#xff0c;2、知道路径&#xff0c;向对应路径发出报文&#xff0c;3、路口路由器&#xff0c;下一步就是目标主机在哪。 想要通信必须同在一个局域网&#xff0c;其实将公网就可以看作一个大型的局域网。 在同一个局域网内发送…

正点原子嵌入式linux驱动开发——Linux USB驱动

USB是很常用的接口&#xff0c;目前大多数的设备都是USB接口的&#xff0c;比如鼠标、键盘、USB摄像 头等&#xff0c;在实际开发中也常常遇到USB接口的设备&#xff0c;本章就来学习一下如何使能Linux内核自带的USB驱动。这里不会具体学习USB的驱动开发。 USB接口简介 什么是…

413 Request Entity Too Large(nginx/1.24.0)

报错内容 <html><head><title>413 Request Entity Too Large</title></head><body><center><h1>413 Request Entity Too Large</h1></center><hr><center>nginx/1.24.0</center></body>&…

Explaining and harnessing adversarial examples

Explaining and harnessing adversarial examples----《解释和利用对抗样本》 背景&#xff1a; 早期的研究工作认为神经网络容易受到对抗样本误导是由于其非线性特征和过拟合。 创新点&#xff1a; 该论文作者认为神经网络易受对抗性扰动影响的主要原因是它的线性本质&#xf…

精通Nginx(03)-配置简述

本文主要讲述Nginx配置文件结构及调试技巧 使用nginx版本为1.24.0。 目录 Nginx目录 nginx.conf内容结构 配置片段化 配置调试技巧 Nginx目录 Nginx编译安装目录如下&#xff1a; 安装指定目录为"/usr/local"。配置目录为/usr/local/nginx/conf。 目录说明&am…

用LibreOffice在excel中画折线图

数据表格如下。假设想以x列为横坐标&#xff0c;y1和y2列分别为纵坐标画折线图。 选择插入-》图表&#xff1a; 选择折线图-》点和线&#xff0c;然后点击“下一步”&#xff1a; 选择&#xff1a;列中包含数据序列&#xff0c;然后点击完成&#xff08;因为图挡住了数据…

Kubeadm高可用

目录 1、 环境准备 2、所有节点安装docker 3、所有节点安装kubeadm&#xff0c;kubelet和kubectl 4、部署 master 节点 高可用多 master 节点部署 master01&#xff08;2C/4G&#xff0c;cpu核心数要求大于2&#xff09; 192.168.80.20 master02&#xff08;2C/4G&…

浏览器哪家强——PC端篇

今天的分享将围绕一个大家再熟悉不过的名称展开——浏览器。 根据百科给出的解释&#xff1a;浏览器是用来检索、展示以及传递Web信息资源的应用程序。通俗的说&#xff0c;浏览器就是一种阅读工具&#xff0c;类似记事本、word、wps&#xff0c;只不过后者阅读的是文本文档&am…

linux同一局域网下如何连接其他路由器下的主机

一、环境&#xff1a;win10系统、Linux虚拟机 二、操作步骤&#xff1a; 1、因为是一个IP&#xff0c;先把win10下的IP地址修改任意IP&#xff0c;不能上网也行&#xff0c;主要是把他的IP给Linux用。 2、设置Linux的IP地址&#xff0c;注意第一行要全部填写&#xff0c;说明&a…

记一次 logback 没有生成独立日志文件问题

背景 在新项目发布后发现日志文件并没有按照期望的方式独立开来&#xff0c;而是都写在了 application.log 文件中。 问题展示 日志文件&#xff1a; 项目引入展示&#xff1a; <include resource"paas/sendinfo/switch/client/sendinfo-paas-switch-client-log.…

初识JavaScript(一)

文章目录 一、JavaScript介绍二、JavaScript简介1.ECMAScript和JavaScript的关系2.ECMAScript的历史3.什么是Javascript&#xff1f;4.JavaScript的作用?5.JavaScript的特点 三、JavaScript基础1.注释语法2.JavaScript的使用 四、JavaScript变量与常量变量关键字var和let的区别…

npm install报错,解决记录

第一步&#xff1a;检查和安装 我这里建议检查 1.node.js版本是否和前使用版本一致 2.npm版本是否和前使用版本一致 3.vue版本是否和前使用版本一致 4.vue脚手架是否和前使用版本一致 5.npm镜像是否和前使用版本一致 1.检查版本 【node版本】 命令&#xff1a;node -v 结果&a…

删除排序链表中的重复节点II(C++解法)

题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a;head [1…

C++ SpinLock、RecursiveSpinLock 基于原子CAS实现自旋锁(TASLock、TTASLock)

本文使用内存屏障来 VolatileRead、VolatileWrite 保证读写重入自旋锁的当前线程ID&#xff08;tid&#xff09;&#xff0c;如果不愿意采用内存屏障的方式来处理&#xff0c;人们可以选择使用原子变量读写来代替。 C 置R/W内存屏障&#xff1a; static inline void Mem…