Informace PP:
Cílem dvou democvičení (termíny: 1.12. a 8.12.2023) je seznámení s vlastnostmi paměťového podsystému běžných počítačů (především CPU cache + virtualizace paměti/stránkování) z hlediska výpočetního výkonu.
DEMO1: Slajdy
DEMO2: pokračování - další příklady, nástroje a experimenty
Použité demo-příklady předvedou vliv paměťového podsystému na výkon běžných algoritmů (např. různé algoritmy násobení matic), atd.
Úkol 3
Zadání viz IS ( latin2 , utf8 )
+ možnost navíc: doladit testy (lepší přesnost, kratší čas měření, vliv optimalizací GCC, vliv kvality implementace knihovny libc, ...)
Cílem je zamyslet se nad efektivitou přístupu do paměti u běžných programů. Také je zajímavé sledovat rozdíly na různých architekturách, případně kombinace OS/překladač.Základní pojmy:
- hierarchie pamětí,
- lokalita odkazů (čas,prostor),
- typická architektura CPU cache, asociativita,
- kapacita L1, L2, L3 cache a jak ji zjistit (getconf,lscpu,lshw),
- virtualizace paměti (jen stručně: stránky/rámce, TLB, ...),
- spekulativní provádění instrukcí (predikce skoků, ...)
- a některé související problémy (threads+"false sharing", ...)
Odkazy:
- ***** Základní literatura: Drepper: What Every Programmer Should Know About Memory
Memory part 2: CPU caches- MIT OpenCourseWare: memory-systems-and-performance-engineering
- (CPU Cache)
Intel Optimization Manual
Kapitola 2 z Intel SGX Explained- perf , perf-examples , tutorial
příklad z praxe- BLAS
- Zajímavé video (YT)
- Přehled CACHE
Poznámky: getconf -a, /sbin/sysctl -a, lscpu, lshw
TODO: https://github.com/torvalds/test-tlb, clang, ...