深度学习安装环境笔记
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最主流的编程方式。 这个时候,函数式组件是非常鸡肋的,几乎没什么用。因…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...
