小鹏汽车 AI Infra 实习


Q: CPU、GPU、NPU的优化差异及对应场景?

三种处理器的架构哲学完全不同,优化策略必须匹配其硬件特性:

CPU —— 延迟优化、复杂逻辑

特性 详情
设计哲学 最小化单线程延迟(大缓存、深流水线、乱序执行、分支预测)
核心数 4-128核,每核功能强大
内存层次 L1(32-64KB) → L2(256KB-1MB) → L3(数十MB) → DRAM
典型带宽 DDR5 ~100GB/s

优化方向:

  • SIMD向量化:AVX-512(x86)/NEON(ARM)一次处理16个float,加速4-16倍。
  • 缓存友好:数据layout按访问顺序排列(行优先/列优先)、loop tiling、避免cache thrashing。
  • 多线程+亲和性:OpenMP/pthread,绑核避免NUMA跨节点访存。
  • 编译器优化:-O3、PGO(Profile-Guided Optimization)、LTO(Link-Time Optimization)。

适用:数据预处理/后处理、小batch推理、逻辑复杂的控制流、延迟敏感的在线服务。

GPU —— 吞吐优化、大规模并行

特性 详情
设计哲学 最大化吞吐(数千核心、SIMT、大量线程隐藏延迟)
核心数 数千CUDA Core + 数百Tensor Core
内存层次 Register → Shared Memory(192KB/SM) → L2(40-50MB) → HBM
典型带宽 A100 HBM: 2TB/s,H100 HBM: 3.35TB/s

优化方向:

  • 最大化Occupancy:平衡寄存器/共享内存使用,让尽量多的warp驻留。
  • 合并内存访问:连续地址、向量化读写(float4)。
  • 共享内存利用:缓存热数据、减少全局内存访问。
  • 减少Warp Divergence:连续线程走同一分支。
  • Tensor Core:FP16/INT8矩阵运算加速8-16倍。

适用:训练、大batch推理、大规模矩阵运算、任何可并行化的计算密集任务。

NPU —— 能效优化、固定模式加速

特性 详情
设计哲学 特定AI工作负载的极致能效比
计算单元 专用矩阵乘单元(如华为Cube 16×16)+ 向量处理单元
内存管理 软件显式管理(类似早期DSP)
典型能效 5-10 TOPS/W(vs GPU 1-2 TOPS/W)

优化方向:

  • 算子适配硬件:将计算映射到Cube/Vector单元的原生支持格式。
  • 数据搬运优化:显式管理Local Memory的数据搬入搬出(MTE/DMA)。
  • 流水线设计:搬入→计算→搬出三级流水overlap。
  • 算子融合:减少中间数据在各级buffer间的搬运。

适用:端侧/车载部署(功耗约束严格)、固定模型的高效推理。

核心差异总结:GPU重并行度和带宽,CPU重延迟和灵活性,NPU重能效比和固定模式加速。选型根据:延迟要求、功耗预算、算法灵活性需求综合决定。


Q: 手撕CUDA:在uint8数组中找第K大的值?

(编程题)


Q: 手撕:二叉树最右节点?

(编程题)