Fork Union: Beyond OpenMP in C++ and Rust?
9 months ago
- #parallel-computing
- #thread-pool
- #performance
- Fork Union 是一个精简的约300行C++和Rust线程池库,针对fork-join工作负载设计,性能可达OpenMP的80%
- 尽管OpenMP功能强大,但在细粒度并行、可移植性和元编程方面存在局限,这促使了Fork Union的诞生
- 常见线程池库(如Taskflow/Rayon/Tokio)因锁竞争、堆内存分配、CAS停顿和伪共享等问题存在性能开销
- 基准测试显示Fork Union性能比多数线程池快10倍,但仍比OpenMP慢20%
- Fork Union的关键优化包括避免互斥锁、堆内存分配和CAS操作,并通过内存对齐消除伪共享
- 该库提供极简API,专注fork-join并行范式,核心方法含`for_each_thread`/`for_each_static`/`for_each_slice`/`for_each_dynamic`
- 当前Rust缺乏稳定的容器分配器API,这限制了其在高性能计算/大数据领域的应用