高性能 C++ 并行编程导读
高性能 C++ 并行编程导读
时间:2026/04/09
这组笔记现在按“从语言与内存基础,到 CPU 并行,再到 GPU 与实战”的顺序整理。
阅读时不建议完全按时间写作顺序看,而建议按下面这条主线走。
1. 推荐学习顺序
C 指针与内存模型RAII 与智能指针左右值、完美转发与引用折叠模板与元编程vector 容器优化编译器优化与汇编视角访存优化C++11 多线程编程原子操作、内存序与无锁基础TBB 并行编程CUDA 开启的 GPU 编程流体仿真实战
2. 每篇笔记解决什么问题
| 编号 | 主题 | 核心问题 |
|---|---|---|
[01] |
C 指针与内存模型 | 地址、生命周期、数组退化、别名与缓存直觉 |
[02] |
RAII 与智能指针 | 资源如何自动释放,所有权如何表达 |
[03] |
左右值、完美转发与引用折叠 | std::move / std::forward 到底在做什么 |
[04] |
模板与元编程 | 泛型、类型推导、if constexpr、traits、concepts |
[05] |
vector 容器优化 | 连续内存、扩容、失效规则、并发写入模式 |
[06] |
编译器优化与汇编视角 | 编译器如何重写 C++,哪些写法更利于优化 |
[07] |
访存优化 | cache、AoS/SoA、stride、blocking、false sharing |
[08] |
C++11 多线程编程 | thread/mutex/condition_variable/future/thread pool |
[09] |
原子操作、内存序与无锁基础 | atomic、CAS、acquire/release、seq_cst |
[10] |
TBB 并行编程之旅 | task、并行循环、归约、scan、arena、pipeline |
[11] |
CUDA 开启的 GPU 编程 | kernel、内存、shared memory、stream、Thrust |
[12] |
流体仿真实战 | 把 CUDA、访存、数值迭代放到一个完整案例里 |
3. 这次整理做了什么
这次不是只改文件名,而是做了三类整理:
- 把空白或草稿笔记补成正式版:
C 指针、RAII、编译器优化、访存优化、流体仿真 - 新增了一篇缺失但关键的笔记:
原子操作、内存序与无锁基础 - 统一为按内容排序的
[NN]xxx.md命名
4. 如果只想抓主干
时间有限时,可以先看这 6 篇:
C 指针与内存模型RAII 与智能指针左右值、完美转发与引用折叠vector 容器优化访存优化C++11 多线程编程
这几篇能先把 C++ 高性能和并行里最常见的基础坑位补齐。
5. 接下来的自然扩展
如果后面继续补这套笔记,最值得优先新增的主题是:
- SIMD 与自动向量化
- Benchmark 与性能分析方法
- NUMA 与多路 CPU 内存访问
std::pmr与内存池- C++20/23 并发工具:
jthread / latch / barrier / semaphore