Design for Performance
summary
A practitioner recounts measured design wins: using Google Benchmark and GCC with AVX2 intrinsics to turn a textbook matrix–vector loop from ~3 GB/s equivalent into about 24 GB/s observed by hand-vectorizing 8-wide operations; shows indexed vs sequential memory, vector vs list layouts (vectors run ~4× faster here), and how API granularity, data layout and narrow contracts enable or block optimizations. Prototypes and profiling drive every choice, and isolated low‑level code succeeds when encapsulated.
AI-written summary · about
chapters (17)
- 0:00Introduction and context
- 2:33Performance in EDA tools
- 7:12Design as software foundation
- 10:24Diving into code for performance
- 12:32Matrix-vector product benchmark
- 17:59Profiling and compute vs memory
- 21:57Vectorization and alignment
- 26:22Memory access speed insights
- 31:59Sequential vs random memory access
- 36:40Hot data vs hot code
- 40:39Data organization impact
- 43:08List vs vector performance test
- 51:15Restricting data access
- 53:23Prototyping for performance
- 54:30Narrow contracts and UB
- 57:49Key principles summary
- 59:25Q&A session
related talks
51mDesigning for Performance
01h 02mSqueezing the Hardware to Make Performance Juice
01h 06mPerformance engineering: being friendly to your hardware
50mDesigning for Performance
01h 05mPerformance Optimization in Software Development - Being Friendly to Your Hardware
35mAlgorithmic and microarchitecture optimizations of C++ applications
05mMaximising Throughput & Minimising Latency in High-Performance C++ Code
37mHigh Performance Computing: The Modern Approach
