Overview
Explore CPU-friendly coding techniques in this conference talk from code::dive 2018. Delve into the complexities hidden by hardware and software platforms that execute code, going beyond Big-O notation. Learn about typical CPU architecture and how to optimize software performance and power consumption. Discover fundamental principles including data and instruction cache-locality, branch prediction, C and C++ compiler intrinsics, and SIMD. Gain insights into operating system concepts like virtual memory, syscalls, and memory allocation. Through demonstrations and examples, understand the impact of cache locality, branch prediction, memory allocation strategies, and intrinsics on code performance. Compare CPU and GPU processing, examine real-world complexity, and explore CISC architectures. Conclude with practical knowledge on writing efficient, CPU-friendly code for improved software performance.
Syllabus
Intro
CPU vs GPU
Big O Notation
Demo
Real complexity
Cache locality
Caches
Fast Processing
More Demos
Cache
Branch prediction
Branch prediction example
Branch prediction demo
Ciscos
Allocations
List vs Vector
Memory Pools
Intrinsics
Intrinsic demo
Intrinsic problems
AVX instructions
Conclusion
Taught by
code::dive conference