自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(253)
  • 问答 (1)
  • 收藏
  • 关注

原创 信号处理新书推荐-MATLAB信号处理从入门到精通

新书出版,欢迎信号处理相关的小伙伴们去看!花了很长时间写出来的,内容基本涵盖了信号处理所有的内容,函数基本上都是自己实现的,很详细,不单单是MATLAB工具本身,而是从底层介绍了算法的原理和实现过程,最后一章,进一步介绍了芯片级仿真和实现,有很多工程落地的实例。

2026-04-20 10:35:22 273

原创 C++的Concept/Model模式

在 C++ 中提及 Concept/Model,通常指的是这两种语境:*C++20 现代语境:用来给模板参数“立规矩”(Concept),看某个具体类型(Model)符不符合要求。它是编译期的,用来替代复杂的 std::enable_if。经典设计模式语境:用来做类型擦除。通过在包装类内部构建 Concept 基类和 Model<T> 模板子类,实现非侵入式的运行时多态。std::function 和 std::any 都是这种模式的工业级实现。

2026-06-15 20:13:43 169

原创 std::span

std::span是引入的,用于表示,不持有数据、不分配内存,仅保存,替代原生数组指针、vector裸指针传参的不安全写法。

2026-06-15 14:29:16 132

原创 C++11 可变参数模板 (Variadic Template)

C++17 才有原生折叠表达式,C++11 可用。

2026-06-15 11:30:57 37

原创 MLIR专题11:自定义类型和内联

/ 生成 materializeConstant 声明// 生成 parseType/printType 声明hasConstantMaterializer :让 ODS 生成 materializeConstant 方法声明,方言需要实现它来支持常量折叠useDefaultTypePrinterParser :让 ODS 生成 parseType / printType 方法声明,方言需要实现它们来支持自定义类型的文本表示设计模式体现CRTP。

2026-06-14 21:37:09 350

原创 MLIR专题10:下译LLVM IR

MLIR专题10:下译LLVM IR

2026-06-12 15:57:52 133

原创 MLIR专题9:方言下译(lowering)

MLIR专题9:方言下译(lowering)

2026-06-11 18:31:16 250

原创 MLIR专题8:添加Pass

MLIR专题8:添加Pass

2026-06-10 15:13:05 134

原创 MLIR专题7:匹配和重写

MLIR专题7:匹配和重写。

2026-06-09 18:31:09 181

原创 MLIR专题6:函数调用

这是 Toy 方言中的 函数调用操作 ,与 FuncOp (函数定义)配对使用。

2026-06-09 15:51:22 153

原创 MLIR专题5:函数声明

MLIR专题5:函数声明

2026-06-09 14:19:03 377

原创 MLIR专题4:常用数据结构

核心作用:向全局注册你方言独有的编译期常量/配置标签格式(Custom Attribute)。工业级应用场景:在为 NPU 算子编写硬件指令发射 Pass 时,算子往往带有很多专有的静态配置。比如一个卷积算子,它的padding策略是SAME还是VALID?它的硬件流水线切片模式(Tiling Strategy)是按 X 轴切还是按 Y 轴切?你可以把这些复杂的配置信息定义为方言特有的Attribute(如!通过注册后,这个属性格式就被框架正式承认,并开始享受和原生属性一样的编译期哈希去重待遇。

2026-06-08 19:35:47 145

原创 MLIR专题3:MLIR的CRTP原理

你可能会问:“当我(或者框架)手里只有一个通用的Operation*,我想调用它的verify()(校验)或者fold()(常量折叠)函数,但我又不想做dyn_cast穷举,框架是怎么知道该用哪个函数的?MLIR 没有用虚函数表,而是自己维护了一个轻量级的全局元信息表(注册表)。当 MLIR 上下文()初始化时,每个 Dialect 会注册自己的 Op。注册时,会为每个 Op 创建一个全局唯一的// 框架为每种 Op 注册的全局元信息(每种 Op 在内存中只有一份)// 例如 "arith.addi"

2026-06-08 14:53:49 278 1

原创 MLIR专题2:MLIR运算和算子

文件路径定义内容Operation 类(运行时通用操作)Op<> 模板(编译期类型安全包装)TableGen 中 Op 的蓝图定义具体操作类(如 AddOp、ConstantOp)

2026-06-05 19:52:02 264

原创 MLIR专题1:创建方言流程(使用ODS)

这段代码用 TableGen 语法定义了一个名为 Toy 的 MLIR 方言(Dialect),逐行解释:- def :TableGen 关键字,定义一个 具体的实例 (与 class 定义模板不同)- Toy_Dialect :实例名称,后续代码通过这个名字引用该方言- : Dialect :继承自 DialectBase.td 中的 class Dialect 模板- 设置方言的 命名空间名称 为 "toy"

2026-06-05 16:33:25 298

原创 NVDLA专题18:时钟门控

这里TE | E表示只要常规使能E或者测试使能TE有一个有效(为 1),整个时钟使能就有效。设计的关键是CPTE | Eqd在CP的期间,无论E信号怎么抖动、延迟有多大,qd的状态都保持不变。在CP的期间,qd也已经稳定。最后。qd必须等到CP的下降沿,qd才会变成 0。此时CP本身就是 0,所以与门输出Q优雅地保持在 0,不会产生下冲毛刺。qd也是在CP的下降沿,qd变成 1。此时CP是 0,与门输出Q仍然是 0。直到下一个CP的到来,CP变为 1,Q才随着CP变成 1。

2026-05-26 16:59:50 320

原创 NVDLA专题17:CDMA op_en 三拍延迟赋值设计分析

CDMA,op_en三拍延迟赋值设计分析。

2026-05-26 15:30:51 260

原创 NVDLA专题16:ping-pong寄存器原理

NVDLA专题16,ping-pong寄存器的工作原理。

2026-05-25 16:45:36 288

原创 新书MATLAB信号处理从入门到精通推荐

2026-04-21 11:53:04 37

原创 LLVM后端入门9:JIT支持

目标机器的实现可以选择性地包含一个即时(JIT)代码生成器,该生成器会将机器码和辅助结构作为二进制输出进行生成,这些输出可直接写入内存。要实现这一点,可通过执行以下步骤来实现 JIT 代码生成:编写 XXXCodeEmitter.cpp 文件,其中包含一个机器函数 pass,用于将目标机器指令转换为可重定位机器码。编写 XXXJITInfo.cpp 文件,为目标特定的代码生成活动(如生成机器码和存根)实现 JIT 接口。

2026-01-17 11:24:01 762

原创 LLVM后端入门8:Subtarget支持

LLVM后端入门8:Subtarget支持。

2026-01-17 11:09:52 314

原创 LLVM后端入门8:汇编打印(Assembly Printer)

LLVM后端入门8:汇编打印(Assembly Printer)。

2026-01-16 19:54:10 479

原创 LLVM后端入门7:指令选择器(Instruction Selector)

LLVM后端入门7:指令转换和指令选择器(Instruction Selector)

2026-01-07 20:31:58 1029

原创 LLVM IR优化pass的执行和CFG优化流程

LLVM IR优化pass的执行和CFG优化流程。

2025-12-31 17:14:05 238

原创 Bitonic Sort算法原理和RISCV向量实现

Bitonic Sort算法原理和RISCV向量实现。

2025-12-05 18:30:06 810

原创 LLVM后端入门6:指令规划和实现

LLVM后端入门6:指令规划和实现。

2025-12-01 15:01:38 951

原创 LLVM后端入门5:指令操作映射

LLVM后端入门5:指令操作映射。

2025-12-01 14:34:08 424

原创 LLVM后端入门4:指令集的定义

LLVM后端入门4:指令集的定义,如何使用td文件描述和定义一个指令集。

2025-12-01 10:54:35 966

原创 LLVM后端入门3:寄存器组和寄存器类

LLVM中寄存器的定义,表示和实现方法。

2025-11-30 23:55:55 793

原创 LLVM后端入门2:目标机器

CodeGenTargetMachineImpl 被设计为一个基类,用于那些使用 LLVM 目标无关代码生成器(target-independent code generator)实现的目标平台。类应当由一个具体目标类(concrete target class)来特化(specialized),这个具体目标类会实现各种虚方法(virtual methods)。在文件中被定义为的子类。类的实现(位于)同样处理许多命令行选项(command-line options)。要创建一个。

2025-11-29 12:16:04 998

原创 LLVM后端入门1:介绍

LLVM的后端实现过程,第一节首先介绍一下实现的基本步骤。

2025-11-29 11:41:48 755

原创 tiny-gpu入门4: ALU模块分析

tiny-gpu入门4: ALU模块分析

2025-10-27 16:34:06 270

原创 tinygpu介绍3:仿真部分文件

tinygpu介绍3:仿真部分文件

2025-09-13 01:09:54 456

原创 tiny-gpu介绍2:仿真

tiny-gpu介绍2,仿真的实现。

2025-09-11 00:37:47 654

原创 tiny-gpu入门1:整体介绍

tiny-gpu入门,对tiny-gpu的整体介绍。

2025-09-03 00:45:32 1384

原创 Coroutine用法之co_return

Coroutine用法之co_return.

2025-08-28 00:36:06 431

原创 C++如何将多个静态库编译成一个动态库

C++如何将多个静态库编译成一个动态库并使用。

2025-08-24 13:50:10 298

原创 LLVM中的PHI节点

LLVM中的PHI节点的作用和使用。

2025-08-15 00:49:58 7833

原创 LLVM的Value

在 LLVM 中,Value是所有可以作为表达式操作数的 IR(中间表示)实体的基类,是 LLVM IR 类型系统和指令系统的核心概念。它代表了一个 “值”,可以是常量、变量、指令结果、函数参数等,几乎所有在 IR 中参与计算或被引用的实体都继承自Value。

2025-08-13 00:18:35 427

原创 LLVM的FunctionPassManager

在 LLVM 中,FunctionPassManager 是用于管理和运行函数级 Pass(FunctionPass)的核心组件。它负责组织一系列针对单个函数进行分析或优化的 Pass,并按特定顺序执行这些 Pass,是 LLVM 中间代码(IR)优化 pipeline 的重要组成部分。

2025-08-12 00:53:16 806

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除