Logo ČVUT
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
STUDIJNÍ PLÁNY
2018/2019

Effective Software

Přihlášení do KOSu pro zápis předmětu Zobrazit rozvrh
Kód Zakončení Kredity Rozsah Jazyk výuky
BE4M36ESW Z,ZK 6 2P+2C
Předmět nesmí být zapsán současně s:
Efektivní software (B4M36ESW)
Předmět je náhradou za:
Efektivní software (B4M36ESW)
Přednášející:
David Šišlák (gar.), Michal Sojka
Cvičící:
David Šišlák (gar.), Marek Cuchý, Joel Matějka, Michal Sojka
Předmět zajišťuje:
katedra počítačů
Anotace:

V předmětu Effektivní software se seznámíte s problematikou optimalizace softwaru a algoritmů při omezených zdrojích. Předmět se zaměřuje na efektivní využití moderních hardwarových architektur, tj. vícejádrových a víceprocesorových systémů se sdílenou pamětí. Přednášené techniky se student naučí implementovat v jazycích C a Java. Hlavní témata jsou: optimalizace kódu, efektivní datové struktury a využití cache paměti procesoru, datové struktury ve vícevláknových aplikacích, implementace výkonných síťových serverů.

Požadavky:

znalosti z oblasti architektury počítačů, jayzků C a Java

Osnova přednášek:

1. Úvod: jak psát efektivní programy, moderní počítačové architektury, spotřeba energie

2. Běh programu - virtuální stroj, byte-code, kompilátor jazyka Java, JIT kompilátor, vazba na strojový kód, analýza byte-code, zpětná dekompilace Java byte-code, optimalizace v kompilátorech, analýza výkonnosti programu

3. Měření výkonnosti programu, metriky, statistiky, WCET, timestamping, profiling (perf, *trace, cachegrind)

4. Škálovatelná synchronizace - od mutexů k RCU (read-copy-update), transakční paměť, škálovalné API, SIM komutativita

5. Konkurence v JVM - více-vláknové přístupy k datům, monitoring zámků, atomické operace, lock-less/block-free datové struktury, neblokující algoritmy (fronta, zásobník, množina, slovník)

6. Efektivní servery, C10K problém, využití neblokujících IO pro efektivní zpracování síťových požadavků, nativní vyrovnávací paměť v JVM

7. Serializace datových struktur - JSON, XML, protobufs, AVRO, cap'n'proto, mmap/sdílená paměť

8. Přístup k paměti - efektivní programování s použitím vyrovnávací paměti, dynamická alokace paměti (malloc, NUMA, .)

9. Reprezentace objektu v JVM - statická a dynamická analýza paměti, reprezentace dat, datové struktury redukující zátěž správy paměti

10. JVM - alokace objektu, bloom filters, typy odkazů na instance, efektivní vyrovnávací paměť

11. Správa paměti v JVM - organizace paměti, algoritmy správy paměti a jejich parametrizace

12. Virtualizace (IOMMU, SR-IOV, PCI pass-through, virtio, .)

13. Běh programu - kompilátor jazyka C (modifikátor restrict, optimalizace), SIMD

Osnova cvičení:
Cíle studia:
Studijní materiály:

[1] MIT: Performance-engineering-of-software-systems

[2] Oaks, S.: Java Performance: The Definitive Guide. O'Reilly, USA 2014.

[3] Jones, R., Hosking, A., Moss, E.: The Garbage Collection Handbook - The Art of Automatic Memory Management. CRC Press, USA 2012.

[4] Herlihy, M., Shavit, N.: The Art of Multiprocessor Programming. Morgan Kaufman, 2008.

[5] Fog, A.: The microarchitecture of Intel, AMD and VIA CPU, 2016.

[6] Drepper U.: What every programmer should know about memory, 2007

[7] Jain, R.: The Art of Computer Systems Performance Evaluation. Wiley, New York 1991. (slides, book)

[8] Lilja, D. J.: Measuring Computer Performance: A Practitioner?s Guide. Cambridge University Press, 2000. (book web site, Supplemental Teaching Materials)

Poznámka:
Rozvrh na zimní semestr 2018/2019:
Rozvrh není připraven
Rozvrh na letní semestr 2018/2019:
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Po
místnost KN:E-301
Šišlák D.
12:45–14:15
(přednášková par. 1)
Karlovo nám.
Šrámkova posluchárna K9
místnost KN:E-310
Cuchý M.
Matějka J.

18:00–19:30
(přednášková par. 1
paralelka 102)

Karlovo nám.
Lab K310 Linux
Út
St
Čt

Předmět je součástí následujících studijních plánů:
Platnost dat k 21. 8. 2019
Aktualizace výše uvedených informací naleznete na adrese http://bilakniha.cvut.cz/cs/predmet4878606.html