Lightweight Operator Fusion Using Data-Centric Function Interfaces in C++
summary
Describes a concrete system called Fern that enriches function signatures with data production and consumption patterns so a generator emits fused C++ code (implemented for C++17). Claims: restores a measured ~30% loss seen when composing Accelerate functions, matches or slightly beats Intel oneDNN on CPU benchmarks, yields up to ~3x speedup vs naive unfused composition in some stenciled workloads, fuses across library and database boundaries (TileDB/LevelDB style), supports autotuning, parallel loops, and outputs linkable C++ files.
AI-written summary · about
chapters (6)
- 0:00High performance code intro
- 3:51Vector multiplication demo
- 11:40Opaque interfaces and locality
- 21:29Fern and data patterns
- 31:53Fused code control
- 44:40Key insights and future
related talks
01h 09mFunctional Programming in C++
01h 04mFunctional C++ for Fun and Profit
53mCan C++ Data-oriented-design be Improved?
01h 22mCostless Software Abstractions for Parallel Architectures
01h 00mMetaprogramming with Boost.Hana: Unifying Boost.Fusion and Boost.MPL
01h 01mC++ Mixins
58mThe Imperatives Must Go! [Functional Programming in Modern C++]
59mFunctional Programming: data
