📘 异构计算编译器性能调优指南
🎯 30章 · 从入门到前沿
01
异构计算概述
什么是异构计算 · 发展历程 · GPU/FPGA/ASIC 对比
02
编译器基础回顾
传统编译器架构 · LLVM vs GCC · 中间表示(IR)作用
03
异构编译器架构
整体设计 · Host/Device代码分离 · 离线编译与JIT
04
数据并行与任务并行
SIMT/SIMD模型 · 任务并行 · 同步与通信开销
05
内存层次结构优化
全局/共享/寄存器/常量/本地内存访问优化
06
循环优化技术
循环展开 · 分块(Tiling) · 融合与分布 · 交换
07
向量化与SIMD优化
自动/手动向量化 · SSE/AVX/NEON 指令集
08
线程束与线程块优化
Warp发散 · 线程块大小 · 占用率计算
09
核函数(Kernel)优化
启动配置 · 内联与调用优化 · 寄存器压力
10
编译器指令优化
内联汇编/Intrinsics · #pragma unroll/ivdep
11
自动调优框架
OpenTuner · AutoTVM · Ansor 原理与使用
12
基于机器学习的编译优化
成本模型 · 特征提取 · 强化学习指令调度
13
领域特定语言(DSL)与编译器
Halide · TVM · Triton 编译优化策略
14
多级中间表示(MLIR)
Dialect/Operation/Pass · 异构编译应用
15
Polyhedral模型与依赖分析
多面体基础 · 数据依赖 · 循环变换合法性
16
内存带宽优化
数据复用 · Cache Blocking · 预取技术
17
计算与内存重叠
异步拷贝 · 流水线 · 双缓冲(Double Buffering)
18
归约与扫描优化
并行归约 · 并行扫描(Prefix Sum) · 树形结构
19
稀疏计算优化
CSR/COO/ELL格式 · 稀疏内核 · 编译器支持
20
图编译优化
算子融合 · 常量折叠 · 死代码消除 · 调度策略
21
运行时与调度系统
任务调度器 · 动态负载均衡 · 依赖管理
22
性能剖析与瓶颈分析
Nsight/VTune/ROCProfiler · 性能计数器
23
编译器调试与验证
打印IR/Dump Pass · 数值误差 · 断言检查
24
OpenCL与SYCL编译优化
OpenCL流程 · SYCL单源优化 · SPIR-V
25
CUDA与HIP编译优化
NVCC流程 · HIP适配 · PTX/SASS优化
26
FPGA编译器优化
HLS策略 · 启动间隔(II) · DSP/BRAM利用
27
多GPU与分布式编译优化
NCCL/RCCL · 数据分片 · 模型/流水线并行
28
功耗与能效优化
DVFS策略 · 编译器功耗管理 · FLOPS/Watt
29
编译器测试与基准测试
测试用例 · 回归测试 · Rodinia/PolyBench/SHOC
30
未来趋势与前沿技术
存算一体 · 量子编译器 · AI编译器(PyTorch/TensorRT/XLA)