- 博客(84)
- 资源 (3)
- 收藏
- 关注

原创 GPU虚拟化——(一)浅谈Virgl技术栈
本博客将深入探讨 QEMU Virgl 技术栈,着重分析其在虚拟化环境中实现GPU 3d图形渲染的关键机制。Virgl 是一项创新技术,旨在将 OpenGL 渲染支持引入 QEMU 虚拟机,使得虚拟机中的应用能够充分利用主机 GPU 的图形处理能力。
2024-10-24 17:52:10
1491
3
原创 分页操作全解析:从「内存->显存」到「页表更新」(含页表更新的特殊地位)
本文旨在理解分页的概念、分页设计的操作类型。并通过图解的形式理解内存分页以及页表更细两种分页操作的本质区别以及相应的注意事项。
2025-03-19 15:01:30
1048
原创 系统开机设备寻址全流程:从 UEFI 伪代码到内核映射
在系统开机过程中,设备寻址是一个关键环节,它涉及到 UEFI 固件对硬件设备的初步探测和资源分配,以及 Linux 内核在此基础上进行的二次加工和冲突化解。本文以 AMD 集成 GPU(ACPI 描述)和 NVIDIA 独立显卡(PCIe 设备)为例,详细介绍这一过程。
2025-03-14 14:02:55
540
原创 ARM64 架构地址空间分配深度解析
ARM64架构在地址空间设计上的选择,反映了其在性能、功耗、成本与扩展性之间的平衡。通过合理的地址空间划分和优化的内存映射机制,ARM64处理器在保持良好兼容性的同时,为系统设计提供了高度的灵活性。
2025-03-13 11:03:47
809
原创 Platform 设备:ACPI _ 设备树里的「板载原住民」
与 PCIe 的本质区别:非总线枚举,资源静态声明ACPI / 设备树的作用:替代动态枚举,告诉内核「我是谁,资源在哪」驱动开发要点:关注compatible匹配和静态资源解析(而非 BAR 探测)理解 Platform 设备,本质是理解「嵌入式系统 / 主板级设备的静态配置哲学」—— 这与 PCIe 的「即插即用」动态哲学形成鲜明对比,却共同构成了现代计算机的设备管理体系。
2025-03-12 14:56:18
541
原创 操作系统概念(二)——IOMMU逻辑地址空间
IOMMU 的逻辑地址空间是一种设备专用的虚拟地址空间,它允许设备以逻辑地址访问内存,同时通过 IOMMU 页表映射到实际的物理地址。这种机制提高了内存管理的灵活性、安全性,并支持设备间的隔离。
2025-01-15 17:27:05
695
原创 操作系统概念(一)——IOMMU学习
IOMMU(Input/Output Memory Management Unit)是内存控制器( memory controller)的一部分,用于将设备虚拟地址(也可称为I/O地址或设备地址)转换为物理地址。IOMMU:将设备虚拟地址翻译为物理地址;MMU:负责将CPU虚拟地址翻译为物理地址。在设备做DMA访问内存的时候,系统返回给设备驱动的不再是物理地址,而是虚拟地址 ,这个地址一般叫IOVA,设备访问内存时,由IOMMU来将这个设备虚拟地址转换为物理地址。
2024-11-07 09:28:39
901
原创 waiting for automatic snapd restart 解决方案(installing chromium 卡死)
Ubuntu24.04-arm64安装谷歌浏览器,不依赖snap
2024-07-30 08:36:43
3358
原创 Ubuntu系统编译内核——deb安装 / install安装
本文简要记录两种编译内核的方法:打包成deb模块安装(推荐)和直接make install安装;
2024-05-29 14:16:57
3508
原创 PCIe基础:Root Complex 、Host Bridge、PCIe Bridge、Switch基本概念
为了方便理解,本文首先介绍了传统的南北桥体系架构,随后再介绍了PCIe的系统架构。
2024-03-21 16:30:10
7941
2
原创 简单字符设备文件的实现(包含文件的读写和逻辑梳理)
240// 主设备号#define MYNAME "my_chrdev" // 设备名称// 定义一个缓存数组,用于内核接收数据// 定义一个字符设备结构体// 用于保存主设备号kbuf:这个数组在内核中被分配,并且在内核模块的整个生命周期中都可以访问。类型:一种表示字符设备的结构体,可以通过它来管理字符设备的操作。
2023-09-04 10:23:29
988
原创 RPM包的概念以及制作过程
早期,人们需要通过下载软件源码,然后进行编译、安装等操作,这一系列过程十分繁琐。为了方便用户能够在Linux系统中更加方便地安装软件,因此便又了软件包管理工具。rpm:CentOS/Red Hat/Fedora均采用rpm工具,其对应的软件安装包后缀为.rpmdpkg:Ubuntu/debian均采用dpkg工具,其对应的软件安装包后缀为.deb当然,还有更高级的软件管理工具yum和apt,相比于前者,yum和apt能够自动解决安装软件包的直接依赖,能够极大程度地降低用户安装软件的难度和安装细节。
2023-08-20 17:11:22
2421
原创 Linux常用命令学习总结
最近系统地学习下Linux命令的使用,因此作如下记录,以便随时复习和翻阅。这里有点迷惑,接下来对组和用户的相关命令进行操作测试。POSIX定义了7种文件类型, 使用。,每3位为一组权限设置情况.补充:第一列共10个字符,
2023-08-07 20:20:33
1197
原创 大小写字母、数字与ASCII间的关系
在C语言中,常常需要判断某一个字母是大写字母,小写字母,或者是数字,因此就涉及到一些字母的ASCII码的运算
2023-08-04 09:49:28
924
原创 SCP命令在不同远程服务器之间发送文件(指定端口、大量小文件操作)
最近想把数据集放在另一个服务器上,但是如果先下载到本地然后再上传过去,则需要浪费好久时间。特总结下如何快捷的通过命令完成不同远程服务器之间的文件传输,以及遇到的问题。
2022-12-01 15:04:07
17448
3
原创 为什么同样的模型下,联邦学习框架实现,效果比集中式的要差很多?
问题:为什么同样的模型,例如GRU,用联邦学习框架实现,效果比集中式的要差很多?文章目录问题概述1. 模型更新方式的层面2. 训练样本层面总结问题概述在联邦学习方法和集中式学习方法的训练过程,我发现联邦学习效果比集中式学习方法效果更差,针对此现象,本文做如下分析。 &n.
2022-05-17 17:23:47
2080
原创 torch.load 出现 AttributeError: Can‘t get attribute ‘Net‘ on module ‘__main__‘
torch.load 出现 AttributeError: Can't get attribute 'Net' on module '__main__'问题解决方案问题最近,将已经训练好的模型保存下来后,通过torch.load(model_path)方法读取时,发现没办法正常运行,抛出如下错误: AttributeError: Can't get attribute 'Net' on module '__main__'我直接好家伙,骂骂咧咧去搜为啥。报错原因: torch.load()方法所
2021-09-01 20:49:32
14240
10
原创 github中pull request学习记录
pull request 学习记录1 寻找 Fork 代码2 对分支进行修改3 仓库的关联建立4 pull request心血来潮,学一下 pull request 的使用pull request 实际上是由于,你对他人的开源项目代码进行了改进,想把修改部分同步到项目源地址非自己folk的远程仓库,但是你没有同步权限,而pr就是一种将自己本地修改通过申请的发送形式,发送给源远程仓库,只要请求通过,你的代码就可以被合并。11 寻找 Fork 代码首先,寻找一个可用的项目,这里用廖雪峰老师的项目 mi
2021-08-11 20:06:13
2000
2
原创 深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用
深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用前言一、Batch Normalization是什么?1.1 Internal Covariate Shift1.2 Internal Covariate Shift 带来的影响1.3 如何减缓 Internal Covariate Shift 问题带来的影响白化(Whitening)白化存在的问题二、Batch Normalization2.1 传统 Normalization2.2 改进
2021-07-26 21:56:26
3466
4
原创 PyG快速安装(一键脚本,2021.7.14简单有效)
PYG一键脚本安装通过脚本安装离线本地安装安装结果测试本文提供两种方法安装都可成功安装 pyg通过脚本安装直接通过脚本安装,自建一个python脚本,直接运行即可,代码如下:import loggingimport subprocessfrom setuptools import setupimport torchcuda_v = f"cu{torch.version.cuda.replace('.', '')}"torch_v = torch.__version__.split('
2021-07-14 11:24:47
1718
2
原创 Ubuntu16.04 安装OMnet++4.6(5.4也可)
Ubuntu16.04 安装OMnet++5.4 or 4.61. 准备工作下载安装包下载必要环境依赖2. 开始安装文件解压omnet++环境变量配置基本配置添加配置和构建omnet++1. 准备工作下载安装包官网链接: http://omnetpp.org版本选择: 选择自己想要的版本可以从OLDER VESIONS中找找到自己需要的版本,选择对应Linux(其他系统也是如此),下载即可.note: 不同版本的OMNet++的差别还是挺大的,所以一定要选择自己需要的版本.下载必
2021-03-17 11:34:03
1251
2
原创 数字图像处理学习(2)—— 图像直方图均衡与图像匹配(python实现)
数字图像处理学习(2)—— 直方图均衡与图像匹配1. 直方图均衡(Histogram Equalization)1.1 直方图均衡化概念1.2 直方图均衡实现简单思路1.3 直方图均衡实现代码2.4 结果展示2. 图像匹配(图像规定化)2.1 图像匹配概念2.2 实现思路2.3 直方图匹配可视化[^2]2.4 图像直方图代码实现2.5 图像规定化结果1. 直方图均衡(Histogram Equalization)1.1 直方图均衡化概念直方图均衡化 :就是把一个已知灰度概率密度分布的图像经过某种变换.
2020-11-30 22:12:07
12915
16
原创 数字图像处理学习(1)——图像插值Python代码实现
数字图像处理学习(1)——图像插值Python代码实现1. 图像插值 (Image Interpolation)2. 最近邻插值法2.1 最近邻插值法2.2 最近邻插值法(Python 代码实现——图像缩小)2.3 运行结果示例3. 双线性插值法3.1 双线性插值法3.2 双线性插值法(Python代码实现——图片放大)3.3 结果展示最近在学习数字图像处理,打算长期记录下来。1. 图像插值 (Image Interpolation)当我们需要放大或者缩小一张数字图像的时候,我们所进行的操作称之为Im
2020-10-24 08:51:10
7200
6
原创 图像语义分割中的上采样(Upsampling)和下采样(subsampling)
图像语义分割中的上采样和下采样1. 下采样和上采样的基本概念最近在看到一篇论文中用到了transposed convolution,并出现了upsampling等概念,表示很迷。那么什么是upsampling ?1. 下采样和上采样的基本概念下采样: 对卷积得到的压缩特征图进行进一步压缩。实际上就是卷积层之间的池化层。作用: 通过最大池化或者平均池化从而减少了特征,进而参数的数量,且降低了卷积网络计算的复杂度;实际上就是过滤作用小、信息冗余的特征,保留关键信息(而信息关键与否就体现在对应的val
2020-09-27 20:42:44
24029
7
原创 Python项目完成requirements.txt的生成以及依赖一键安装
Python项目完成requirements.txt的生成以及依赖一键安装1. 生成requirements.txt文件第一种方法(推荐)第二种方法2. 根据requirements.txt安装依赖当我们需要在另外一台电脑部署项目的时候,我们需要重新配置环境和依赖,使得项目可以顺利运行。我操作的背景是需要在远程服务器进行项目的部署。1. 生成requirements.txt文件首先请cd进入你的本地项目目录下生成requirements.txt有两种方法第一种方法(推荐)我们需要使用到一个
2020-09-16 19:09:22
2282
原创 os.walk()的详细理解(秒懂)
Python中os.walk()的详细理解 1. os.walk()参数的含义2. 代码检验2.1 先看第一次遍历:2.2 再看第二次遍历:2.3 再看第三次遍历:2.4 最后看第四次遍历:3. 总结反正最近文件夹名字操作要了我的老命,所以总结下这个方法的使用。1. os.walk()参数的含义root:Prints out directories only from what you specified.dirs:Prints out sub-directories from root.fil
2020-08-13 19:39:52
76353
41
原创 精读Regularizing Reasons for Outfit Evaluation with Gradient Penalty
精读Regularizing Reasons for Outfit Evaluation with Gradient Penalty1. 本文贡献介绍2. EVALUTAION3数据集3. 完成评估的网络框架3.1 特征提取阶段(feature extraction net)3.2 内联因素兼容性网络层(Intra-factor compatibility network)3.3 因素内部兼容性网络层(Inter-factor compatibility network)4. 对评估的原因分析4.1 CAM
2020-08-10 17:10:51
710
原创 matplotlib中文乱码问题(ubuntu和win 10均可以)
下载字体首先下载中文字体,链接如下。字体下载链接字体文件放入指定目录下 目录如下:/anaconda3/envs/pytorch/lib/python3.7/site-packages/matplotlib/mpl-data/font/ttfs修改matplotlibrc文件 matplotlibrc文件的位置如下:/anaconda3/envs/pytorch/lib/python3.7/site-packages/matplotlib/mpl-...
2020-08-05 10:19:54
545
1
转载 Linux 系统添加 Swap 交换分区
Linux 系统添加 Swap 交换分区简介Linux 系统中的 Swap 分区,即交换分区,类似于 Windows 的虚拟内存,其作用可简单的描述为:当系统的物理内存不够用的时候,将暂时不用的数据存放到交换空间所在的硬盘上,从而可以腾出内存来让别的程序运行。在这里不讨论直接划出一部分硬盘作为交换分区的情况,只介绍通过添加 Swap 文件来设置交换分区的方式。添加 Swap 分区 随便进入一个目录用于后续存放 Swap 文件,也可以直接放在根目录,这里放在/var...
2020-07-19 16:17:58
909
1
原创 detach()、data、with no_grad()、requires_grad之间关系
detach()、.data、with no_grad()、requires_grad之间关系[@TOC](detach ()、.data、with no_grad()、requires_grad之间关系)
2020-07-18 20:48:15
4684
5
原创 jupyter notebook中引入torch时报错:ModuleNotFoundError: No module named ‘torch‘
jupyter notebook 中运行import torch时报错:ModuleNotFoundError: No module named 'torch'如何插入一段漂亮的代码片参考链接1参考链接2如何插入一段漂亮的代码片
2020-07-16 19:45:01
5552
2
原创 ubuntu20.04安装nvidia驱动报nvidia-依赖not going to be install 导致无法安装
ubuntu20.04安装nvidia驱动报nvidia-依赖not going to be install 导致无法安装两种解决方案:我使用的第一种方案,完美解决缺少什么依赖就下载什么依赖,命令如下:sudo apt-get install xxx解决ubuntu18.04安装nvidia驱动报nvidia-dkms依赖无法安装(全程配图)成功图片如下所示:...
2020-07-11 21:34:14
5864
【决策树】中案例代码的使用(西瓜数据集合)
2019-11-30
TCP——实现时间协议实验三
2019-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人