深度学习安装环境笔记
1、输出cuda版本
torch.version.cuda 返回的是 PyTorch 在编译时所使用的 CUDA 版本,而不是运行时实际调用的 CUDA 版本。PyTorch 在运行时实际调用的 CUDA 版本取决于系统上安装的 CUDA 驱动和库。
import torch
from torch.utils.cpp_extension import CUDA_HOME# 输出 预编译时cuda 版本
print(torch.version.cuda)# 输出 PyTorch 版本
print("PyTorch version:", torch.__version__)# 输出 CUDA_HOME 变量,真正使用的版本
print("CUDA_HOME:", CUDA_HOME)
2、查看pytorch和cuda关系:
https://pytorch.org/get-started/previous-versions/
3、显卡、显卡驱动、cuda、cuDNN之间关系:
https://blog.csdn.net/ergevv/article/details/140328687
4、ubuntu安装虚拟环境:
# 添加 PPA(个人软件包档案)
sudo add-apt-repository ppa:deadsnakes/ppa# 更新包列表
sudo apt update# 安装 Python 3.10
sudo apt install python3.10# 安装 pip (可选)
sudo apt install python3.10-distutils
curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.10# 创建和管理 Python 虚拟环境所需的工具和库
sudo apt-get install python3.10-dev python3.10-venv
1. sudo apt install python3.10-distutils
这条命令的作用是从官方软件仓库中安装 python3.10-distutils 包。distutils 是一个用来构建和安装 Python 模块的标准工具集。它通常被用来打包和发布 Python 库。在一些较新的 Python 安装中,distutils 可能没有默认安装,而一些工具(包括 pip)在安装过程中可能会依赖于 distutils 中的功能。因此,安装这个包可以确保你的 Python 安装中有这些必要的工具。2. curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.10
这条命令实际上是两条命令的组合,使用管道符 | 将它们连接起来。它的工作流程如下:curl -sS https://bootstrap.pypa.io/get-pip.py:这部分命令使用 curl 工具从互联网下载 get-pip.py 脚本。-s 参数让 curl 在下载时不显示进度条等输出信息,而 -S 参数则确保即使开启了 -s 参数,当发生错误时也会显示错误信息。
| sudo python3.10:这部分命令表示将前一部分命令的输出(即下载的 get-pip.py 脚本)作为输入传递给 python3.10 解释器执行。由于命令前面有 sudo,这意味着脚本将以超级用户权限运行,这对于安装全局可用的 Python 包通常是必需的。
整体来说,这条命令的作用是下载并立即运行 get-pip.py 脚本,该脚本会检测当前环境中的 Python 安装,并安装最新版本的 pip(Python 的包管理工具)。这样做可以确保你有一个最新的 pip 版本来管理你的 Python 包。1. python3.10-dev
作用:python3.10-dev 包包含了编译 Python C 扩展模块所需的头文件和静态库。这些文件对于开发和安装使用 C 或 C++ 编写的 Python 扩展模块是必需的。
用途:如果你需要安装某些依赖于 C 扩展的 Python 包,或者你自己编写了需要编译的 C 扩展模块,那么这个包是必需的。
2. python3.10-venv
作用:python3.10-venv 包提供了 venv 模块,该模块用于创建隔离的 Python 虚拟环境。虚拟环境允许你在同一个系统上为不同的项目创建独立的 Python 环境,从而避免包版本冲突等问题。
用途:这个包使得你可以使用 python3.10 -m venv 命令创建新的虚拟环境。虚拟环境中的 Python 解释器和包管理工具(如 pip)都是独立于系统全局环境的。
综合效果
通过安装这两个包,你可以确保:编译支持:你的系统具备编译和安装 C 扩展模块的能力。
虚拟环境支持:你可以创建和管理基于 Python 3.10 的虚拟环境。
5、使用venv创建虚拟环境
# 查找python位置
which python3.10# 使用查到的路径来创建名为splatam的虚拟环境
/usr/bin/python3.10 -m venv splatam# 激活虚拟环境
. splatam/bin/activate# 安装包
pip install -r requirements.txt# 安装本地的库
pip setup.py install
6、使用ubuntu跑深度学习时,cuda正在运行,这时候直接挂机,重启后会报错:UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at …/c10/cuda/CUDAFunctions.cpp:109.) return torch._C._cuda_getDeviceCount() > 0
解决方法,挂机前先关掉cuda,或者重启cuda:
sudo apt-get install nvidia-modprobe
sudo rmmod nvidia_uvm
sudo modprobe nvidia_uvm
1. sudo rmmod nvidia_uvm
命令: sudo rmmod nvidia_uvm
功能: 卸载 nvidia_uvm 内核模块。
作用: nvidia_uvm 是 NVIDIA 统一虚拟内存(Unified Virtual Memory, UVM)的内核模块,用于在 CPU 和 GPU 之间共享内存。卸载这个模块可以清除当前的 UVM 状态,有助于解决一些 CUDA 初始化问题。
2. sudo modprobe nvidia_uvm
命令: sudo modprobe nvidia_uvm
功能: 加载 nvidia_uvm 内核模块。
作用: 重新加载 nvidia_uvm 模块,确保 CUDA 环境能够正确初始化 UVM 功能。
7、查询显卡驱动:
nvidia-smi
NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2
注意这里的CUDA Version不是指你安装的CUDA版本,而是表明,这个显卡驱动最高可以支持CUDA版本为12.2。
8、实时查看显卡使用率
watch -n 1 nvidia-smi
这个命令会每秒刷新一次nvidia-smi输出,从而提供近乎实时的更新。-n 1 参数表示每隔1秒刷新一次显示。如果想要不同的刷新间隔,可以调整这个数字。
9、vscode调试输入参数:
{"version": "0.2.0","configurations": [{"name": "Python 调试程序: 当前文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","args": ["configs/replica/splatam.py"],"env": {"CUDA_VISIBLE_DEVICES": "0"}}]
}
相关文章:
深度学习安装环境笔记
1、输出cuda版本 torch.version.cuda 返回的是 PyTorch 在编译时所使用的 CUDA 版本,而不是运行时实际调用的 CUDA 版本。PyTorch 在运行时实际调用的 CUDA 版本取决于系统上安装的 CUDA 驱动和库。 import torch from torch.utils.cpp_extension import CUDA_HOME…...

使用android studio写一个Android的远程通信软件(APP),有通讯的发送和接收消息界面
以下是使用 Android Studio 基于 Java 语言编写一个简单的 Android APP 实现远程通信(这里以 TCP 通信为例)的代码示例,包含基本的通信界面以及发送和接收消息功能。 1. 创建项目 打开 Android Studio,新建一个 Empty Activity …...
学习Python的笔记14--迭代器和生成器
1.迭代器(Iterator) 概念: 迭代意味着重复多次,就像循环一样。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。 迭代器只能往前不会后退。 1.iter…...

车机端同步outlook日历
最近在开发一个车机上的日历助手,其中一个需求就是要实现手机端日历和车机端日历数据的同步。然而这种需求似乎没办法实现,毕竟手机日历是手机厂商自己带的系统应用,根本不能和车机端实现数据同步的。 那么只能去其他公共的平台寻求一些机会&…...

教学案例:k相同的一次函数的图像关系
【题目】 请在同一个平面直角坐标系中画出一次函数y2x, y2x4的图象,并观察图象,你发现这两个图形有什么位置关系?为什么? 【答案】 图象是相互平行的两条直线 【解析】 一、教学活动形式 这里设计的教学活动形式是“画图 →…...

EmoAva:首个大规模、高质量的文本到3D表情映射数据集。
2024-12-03,由哈尔滨工业大学(深圳)的计算机科学系联合澳门大学、新加坡南洋理工大学等机构创建了EmoAva数据集,这是首个大规模、高质量的文本到3D表情映射数据集,对于推动情感丰富的3D头像生成技术的发展具有重要意义…...

Elasticsearch vs 向量数据库:寻找最佳混合检索方案
图片来自Shutterstock上的Bakhtiar Zein 多年来,以Elasticsearch为代表的基于全文检索的搜索方案,一直是搜索和推荐引擎等信息检索系统的默认选择。但传统的全文搜索只能提供基于关键字匹配的精确结果,例如找到包含特殊名词“Python3.9”的文…...

【Flink-scala】DataStream编程模型之水位线
DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之 数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 3.【Flink-scala】DataStream编程模型之 窗口计算-触发器-驱逐器 文章目录 DataStream API编程模型前言…...
Python导入moviepy找不到editor 视频没有声音设置audio_codec参数
moviepy合成视频出错: 问题一:导入moviepy.editor找不到editor,No module named moviepy.editor问题二:合成的视频没有声音 问题一:导入moviepy.editor找不到editor,No module named moviepy.editor from …...
rsync 是一个非常强大的 Linux 工具,常用于文件和目录的同步、备份和传输。
rsync 是一个非常强大的 Linux 工具,常用于文件和目录的同步、备份和传输。它可以高效地同步本地和远程系统上的文件和目录,并且支持增量传输,仅同步发生变化的部分。rsync 支持压缩传输、删除多余文件、排除特定文件等多种功能,是日常运维、备份和迁移数据的重要工具。 一…...
触发器案例详解
目录 一、定义二、类型三、功能与用途四、创建与调用DML触发器格式示例DDL触发器格式示例登录触发器格式示例五、案例案例一:DML触发器 - 记录更新操作的触发器案例二:DML触发器 - 防止非法工资更新的触发器案例三:DDL触发器 - 记录表结构更改的触发器案例四:DDL触发器 - 防…...
jwt 与 sessionid 的区别及应用场景
在现代 Web 应用中,JWT(JSON Web Token)和SessionID是两种常用的用户认证和状态管理机制。本文从两者的原理、区别、优缺点以及适用场景展开分析,结合常见问题提出了最佳实践建议,帮助开发者更好地选择和使用。 JWT与S…...
tomcat和nginx
Tomcat 和 Nginx 都可以部署 Web 应用,但它们的核心功能和适用场景不同,因此在 2024 年生产环境及未来,是否使用 Tomcat 取决于需求和技术架构的特点。 1. Tomcat 的特点与适用场景 Tomcat 是 Java Servlet 容器,主要用来运行基于…...
服务器带宽与数据安全的重要性与作用
服务器带宽指的是服务器与外部网络通信的能力,即服务器发送和接收数据的速率。带宽越大,服务器在同一时间内能够处理的数据量就越多,数据传输的速度和稳定性也就越高。在数字化时代,企业对于数据的依赖程度日益加深,无…...
JSON数据处理
1. JSON注解 Data NoArgsConstructor AllArgsConstructor JsonIgnoreProperties(ignoreUnknowntrue) JSON注解: JsonIgnoreProperties(ignoreUnknowntrue) Hutool 日期格式化: DatePattern DateTimeFormat(pattern "yyyy-MM-dd HH:mm:ss")…...

FSWIND脉动风-风载时程生成器软件原理
大量风的实测资料表明,在风的时程曲线中,瞬时风速包含两个部分:一部分是自振周期一般在 10 分钟以上的平均风,另一部分是周期一般只有几秒左右的脉动风。平均风由于其周期一般比结构的自振周期大,因而考虑其作用性质相…...

搭建高可用负载均衡系统:Nginx 与云服务的最佳实践
搭建高可用负载均衡系统:Nginx 与云服务的最佳实践 引言 在项目开发过程中,我们通常在开发和测试阶段采用单机架构进行开发和测试。这是因为在这个阶段,系统的主要目的是功能实现和验证,单机架构足以满足开发人员的日常需求&…...

对比git命令与TortoiseGit工具,理解git解决冲突的过程
1 引言 此前用TortoiseSvn习惯了,所以,转到git时也同时选择了TortoiseGit工具。 同时,对比了可视化工具和git命令的操作,来深入理解git解决冲突的方式。 2 使用远程仓库替代本地仓库的内容 2.1 TortoiseGit做法 using “MERGE_…...
guava缓存的get方法的回调函数讲解一下
CacheBuilder.newBuilder()//设置缓存初始大小,应该合理设置,后续会扩容.initialCapacity(10)//最大值.maximumSize(100)//并发数设置.concurrencyLevel(5)//缓存过期时间,写入后10分钟过期.expireAfterWrite(600,TimeUnit.SECONDS)//统计缓存…...

React基础知识四 Hooks
什么是hooks? (coderwhy) hooks是react 16.8(2019年)出的新特性。 react有两种形式来创建组件——类式和函数式。在hooks之前类式组件就是react最主流的编程方式。 这个时候,函数式组件是非常鸡肋的,几乎没什么用。因…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...