02 · C++ 必要基础
02 · C++ 必要基础 目标:理解 C++ 的内存模型和对象生命周期管理,能看懂推理框架 host 代码里的指针、智能指针、模板用法 一、指针与引用C++ 在 C 的指针基础上增加了引用: 123int x = 42;int* p = &x; // 指针:存储 x 的地址int& r = x; // 引用:x 的别名,本质是语法糖,编译器实现上通常也是地址 指针 引用 是否可以为 null 可以 不行,必须绑定到对象 是否可以改变指向 可以 不行,绑定后不能换 语法 *p 解引用 直接用 r,和用原变量一样 函数传参的三种方式: 123void foo_value(int x) { x = 99; } // 复制,不影响外部void foo_ptr(int* x) { *x = 99; } // 传地址,可修改外部void foo_ref(int& x) { x = 99; } // 传引用,可修改外部,语法更干净 推理框架...
03 · C++ 编译模型与 CMake
03 · C++ 编译模型与 CMake 目标:理解 C++ 从源文件到可执行文件的完整流程,以及 .h/.cpp 分离的原因,能独立用 CMake 构建多文件项目 一、编译流程总览1234567源文件 (.cpp) ↓ 预处理器翻译单元(纯文本) ↓ 编译器目标文件 (.o) ↓ 链接器可执行文件 每个 .cpp 文件独立编译成一个 .o,链接器最后把所有 .o 合并。 二、第一步:预处理器输入:原始 .cpp 源文件(含 #include、#define 等指令) 做了什么: 展开 #include:把头文件内容直接复制粘贴到 #include 的位置 1234567// 原始 main.cpp#include "add.h"int main() { ... }// 展开后int add(int a, int b); // add.h 的内容被复制进来int main() { ... } #include <iostream> 同理,展开后有几千行。 展开 ...
04 · CUDA 执行模型
04 · CUDA 执行模型 目标:理解 GPU 和 CPU 的执行模型根本差异,掌握 thread/warp/block/grid 四层层级,理解 warp divergence 和延迟隐藏机制 一、GPU 和 CPU 的根本差异高层抽象: 12345CPU:少量强大的核心(8-32),每个核心有复杂的分支预测、乱序执行、大缓存 → 设计目标:让单个任务跑得尽可能快GPU:大量简单的核心(3080 Ti 有 10240 个 CUDA core),每个核心只做简单的乘加 → 设计目标:让海量任务同时跑 矩阵乘法天然适合 GPU——拆成几万个独立的乘加操作,同时计算。 为什么 GPU 核心可以这么多: 每个 GPU 核心没有复杂的控制逻辑(分支预测、乱序执行),省下来的晶体管全部用来堆计算单元。代价是编程模型受限——程序员必须显式组织并行。 二、四层执行层级Thread(线程)最小执行单元,执行一次 kernel 函数调用。每个 thread 有独立的寄存器和局部变量。 例:矩阵加法 C[i] = A[i] + B[i],每个 ...
05 · CUDA 内存优化
05 · CUDA 内存优化 目标:理解 GPU 内存层级,掌握 Shared Memory Tiling 优化 GEMM 的原理,理解 bank conflict 和延迟隐藏机制 一、GPU 内存层级高层抽象: 123寄存器(Register) → Shared Memory → L2 Cache → HBM(显存) 最快 最慢 最小 最大 层级 作用域 延迟 容量(3080 Ti) 寄存器 每个 thread 私有 ~0 极小 Shared Memory block 内共享 ~5ns 每个 SM 约 100KB L2 Cache 所有 SM 共享 中等 6MB(4090D 72MB) HBM 所有 SM 共享 200-800 时钟周期 12GB 核心推论: 同一时刻需要被多次读取的数据,应该先从 HBM 搬到 Shared...
06 · GPU 性能模型与分析工具
06 · GPU 性能模型与分析工具 目标:理解 Roofline Model,能计算 kernel 的算术强度,判断瓶颈在带宽还是算力,知道该往哪个方向优化 一、两个硬件上限GPU 的性能受两个硬件上限约束: 12算力上限:GPU 每秒能做多少次浮点运算(TFLOPS)带宽上限:GPU 每秒能从显存搬多少数据(TB/s) 4090D 的参数: 算力峰值:82.6 TFLOPS(FP32)= 82600 GFLOPS 显存带宽:1008 GB/s 二、算术强度算术强度(Arithmetic Intensity):kernel 的固有属性,由计算量和数据量的比值决定: 1算术强度 = 总浮点运算次数(FLOP) / 总显存访问字节数(Byte) 不需要运行就能算出来,只需数清楚 kernel 做了多少次运算、读写了多少数据。 Vector Add 的算术强度: 123456C[i] = A[i] + B[i],N 个元素浮点运算:N 次加法 = N FLOP显存访问:读 A(4N Byte)+ 读 B(4N Byte)+ 写 C(4N Byte)=...
07 · 自回归生成与 KV Cache
07 · 自回归生成与 KV Cache 目标:理解 LLM 推理的完整时序过程,掌握 KV Cache 的作用和显存代价,理解 Prefill 和 Decode 两个阶段的本质差异 一、Transformer 完整计算图(回顾)12345678910111213141516171819token 序列 ↓ Embedding 层[seq_len, d_model] ↓ Transformer Block × N 层(每层结构相同) ├── Multi-Head Self-Attention │ x → Q,K,V(各乘权重矩阵) │ → reshape 成 [num_heads, seq_len, head_dim] │ → 每个 head 独立做 Attention │ → 拼接 + W_O 投影 │ → 残差连接 + LayerNorm └── FFN → W₁ 升维(×4)→ ReLU → W₂...
08 · Batching 与调度
08 · Batching 与调度 目标:理解 Batching 的本质收益,掌握 Static Batching 和 Continuous Batching 的区别,理解 vLLM scheduler 的核心调度逻辑 一、为什么需要 BatchingDecode 阶段每步只处理 1 个 token,GPU 有上万个 CUDA core,但只有 1 个 token 的计算量——绝大多数算力在空转。 Batching 的本质收益:让多个请求分摊读取模型权重矩阵的开销,提升算术强度。 用 roofline 语言: 123456789单请求 decode: 计算量:1 × d_model² 数据量:d_model²(读权重矩阵) 算术强度 ≈ 1 FLOP/Byte ← 极低,memory-boundbatch size = N: 计算量:N × d_model² 数据量:d_model²(权重矩阵只读一次,N 个请求共用) 算术强度 ≈ N FLOP/Byte ← 随 batch size 线性增长 batch size 越大,算术强度越高,在 roofli...
Kafka 学习主干道
Kafka 学习主干道核心抽象Kafka 是一个持久化的分布式日志系统,所有设计围绕一个核心约束展开: 消息是不可变的、有序的、可重放的日志,消费者通过 offset 自主控制读取位置 从这个约束出发,可以推导出它的所有设计决策: 抽象 一句话 Topic / Partition 日志的逻辑分组与物理分片,分片是并发和扩展的基本单位 Offset 消费者在分区日志中的位置指针,由消费者自己管理 Consumer Group 一组消费者共同消费一个 topic,每个分区只被组内一个消费者消费 Replication / ISR 分区副本机制,ISR 决定谁有资格成为 leader Producer Acks 生产者对”写入成功”的定义,决定可靠性与延迟的取舍 Log Segment 分区在磁盘上的物理存储单元,append-only,支持顺序写 主干道节点 # 文件 内容 状态 1 01-core-concepts.md Topic / Partition / Offset / C...
算法刷题目录
题目统计 分类 数量 占比 array 13 15.12% bfs 2 2.33% binary_search 3 3.49% dfs 7 8.14% dp 17 19.77% graph 1 1.16% greedy 1 1.16% linkedlist 14 16.28% math 1 1.16% sliding_window 4 4.65% stack 1 1.16% string 10 11.63% structure 5 5.81% tree 4 4.65% two_pointers 3 3.49% array 121.买卖股票的最佳时机 1262.可被三整除的最大和 16.最接近的三数之和 215.数组中的第k个最大元素 2946.循环移位后的矩阵相似检查 31.下一个排列 41.缺失的第一个正数 54.螺旋矩阵 56.合并区间 560.和为-k-的子数组 704.二分查找 88.合并两个有序数组 912.排序数组 bfs 102.二叉树的层序遍历 103.二叉树的锯齿形层序遍历 binary_...
计算机网络
TCP/IP 四层模型总览 层级 名称 职责 核心协议 数据单元 4 应用层 为用户程序提供网络服务接口,定义数据格式和交互规则 HTTP、DNS、FTP、SSH、SMTP 报文(Message) 3 传输层 端到端通信,通过端口号区分同一主机上的不同进程 TCP、UDP、QUIC 段 / 数据报 2 网络层 主机到主机的寻址和路由,跨网络转发 IP、ICMP、ARP 包(Packet) 1 网络接口层 在物理介质上传输比特流,帧封装与硬件寻址 以太网、WiFi、PPP 帧(Frame) 与 OSI 七层的对应 12345678910TCP/IP 四层 OSI 七层┌──────────┐ ┌──────────────┐│ 应用层 │ ←→ │ 应用/表示/会话 │├──────────┤ ├──────────────┤│ 传输层 │ ←→ │ 传输层 │├──────────┤ ├──────────────┤│ 网络层 │ ←→ │ 网络层 ...
