Yuxxxxxxxxxx's Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

Linux驱动——Platform设备驱动

一、Platform 驱动简介 在嵌入式 Linux 驱动开发中,面对 SoC 内部集成的硬件(如 GPIO、UART、I2C 控制器等),直接操作寄存器的驱动往往存在可移植性差的问题——硬件引脚或地址变动时,需修改大量驱动代码。 为此,在 Linux 2.6 以后的设备驱动模型中,需关心总线、设备和驱动这三个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在
2026-08-05
Linux > 设备驱动
#Linux #设备驱动

Linux驱动——MISC驱动

一、MISC驱动简介 misc——miscellaneous,译为杂项。众所周知,Linux 中的驱动是分层设计的,每个设备都有自己的归属类型,比如键盘为输入设备,属于 input 子系统。但是会存在一些设备无法简单被划分到某一类中,此时可以基于 misc 驱动框架实现该设备的驱动。misc 驱动为不知类型的设备提供一个框架,方便对应设备驱动的开发。 MISC 驱动框架特点: misc 驱动为字
2026-08-04
Linux > 设备驱动
#Linux #设备驱动

Linux驱动——字符设备驱动开发

一、字符设备驱动简介 Linux/Unix 系统将硬件设备分为两大类: 字符设备 特点:以字节流的形式进行数据传输。数据像水流一样,没有固定的块大小,只能顺序访问。 举例:键盘、鼠标、串口、控制台 (/dev/console)、声卡等。我们最常见的例子就是终端,你输入的字符会一个接一个地传递给系统。 块设备 特点:以数据块 为单位进行数据传输(如 512B、1KB、4KB)。支持随机访问
2026-08-03
Linux > 设备驱动
#Linux #设备驱动

Linux设备树

一、设备树的由来 任何的设备驱动的编写,Linux 已经为我们打好了框架,我们只要像做完形填空一样填写进去就可以了。字符设备驱动框架如下图所示: 杂项设备驱动框架: 通过这些框架,我们可以很容易编写驱动代码,但是,当我们用这个框架非常熟练的时候,我们就会发现虽然这个方法很简单,但是非常不容易扩展,当我们有很多很多相似设备的时候,如果我们都是按照这个框架来完成,那就要写很多遍这个流程,但是多个相
2026-08-01
Linux > 设备驱动 > 设备树
#Linux #设备驱动 #设备树

CUDA 实现online softmax算子

一、Online Softmax 引入 传统 Safe Softmax 需要三遍扫描输入数据,而 Online Softmax 通过巧妙的数学递推,在一遍扫描中同时完成 max 和 sum 的计算,将内存读取次数从 3 次降到 2 次。 Online Softmax 的关键洞察是:max 和 sum 可以在一遍扫描中同时维护,代价只是在发现新的最大值时”修正”之前累积的 sum。 这就是 Onli
2026-07-24
C++ > CUDA
#C++ #CUDA

CUDA 实现softmax算子

一、Softmax 引入 Softmax 的作用就是从一堆数据中选出每个数据对于总体的重要程度——数字大的占比大,数字小的占比小,并且所有占比加起来等于 1。也就是说 Softmax 是把一组任意实数压缩成了一个概率分布。 数学定义:对于输入向量 #mjx-364a6fa{ display:contents; mjx-assis
2026-07-24
C++ > CUDA
#C++ #CUDA

CUDA Streams

一、流的基本概念 用到 CUDA 的程序一般需要处理海量的数据,内存带宽经常会成为主要的瓶颈。在 Streams 的帮助下,CUDA 程序可以有效地将内存读取和数值运算并行,从而提升数据的吞吐量。 应用程序通过流来管理并发操作,流是一系列按顺序执行的命令。不同的流可能无序或并发地执行命令,但此行为并不保证。流上的命令在依赖关系满足时执行,这些依赖可能来自同一流或其他流。同步调用(synchroni
2026-07-23
C++ > CUDA
#C++ #CUDA

CUDA Graphs

一、引入 近年来,随着 GPU 架构的不断更迭,其性能也越来越好,那些个 GPU 操作(比如 CUDA Kernel 或者 Memory Copy)所花费的时间习惯都以微秒为单位进行测量。而不可忽视的一个问题就是 kernel launch 的时间,即将每个操作提交给 GPU 也会产生开销,通常也是微秒级的,如果在实际应用程序中存在大量 GPU 操作,那么 kernel launch 时间将不可忽
2026-07-23
C++ > CUDA
#C++ #CUDA

CUDA Warp Shuffle

束内洗牌函数(Warp Shuffle Functions)是设备端的内置函数,与束内表决函数一样,主要用于进行一些 warp 内数据交换操作。但有两个主要区别:没有数据的规约处理功能、交换的数据通常大于 1 bit。 一、函数描述 内部函数 __shfl_sync() 允许 warp 中的线程之间交换变量,而无需使用共享内存。交换同时发生在 warp 中的所有活动线程(使用 mask 指定),根
2026-07-22
C++ > CUDA
#C++ #CUDA

CUDA tile

一、什么是 Tile? 在 CUDA 编程中,Tile(瓦片 / 分块) 指的是把一个大问题切成许多大小固定、能装载进快速存储(共享内存 / 寄存器)的小块,让线程块(block)或线程(thread)以这些小块为单位循环处理。 简而言之,Tile 就是"数据搬运"与"数据计算"之间的桥梁——它让同一块数据被多次复用,从而把全局内存的带宽瓶颈转化为片上高速存
2026-07-18
C++ > CUDA
#C++ #CUDA
1234…17

搜索

Hexo Fluid