Popis předmětu - B4M36ESW
B4M36ESW | Efektivní software | ||
---|---|---|---|
Role: | PO | Rozsah výuky: | 2P+2C |
Katedra: | 13136 | Jazyk výuky: | CS |
Garanti: | Šišlák D. | Zakončení: | Z,ZK |
Přednášející: | Sojka M., Šišlák D. | Kreditů: | 6 |
Cvičící: | Cuchý M., Matějka J., Sojka M., Šišlák D., Vlasák J. | Semestr: | L |
Webová stránka:
https://cw.fel.cvut.cz/wiki/courses/b4m36esw/startAnotace:
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ů.Osnovy 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 |
Osnovy cvičení:
Literatura:
[1] | MIT: Performance-engineering-of-software-systems | |
[2] | Oaks, S.: Java Performance: 2nd Edition. O'Reilly, USA 2020. | |
[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) |
Požadavky:
znalosti z oblasti architektury počítačů, jayzků C a JavaPředmět je zahrnut do těchto studijních plánů:
Plán | Obor | Role | Dop. semestr |
MPOI6_2018 | Softwarové inženýrství | PO | 2 |
MPOI4_2018 | Počítačové inženýrství | PO | 2 |
Stránka vytvořena 3.6.2023 17:50:03, semestry: Z/2024-5, Z/2023-4, L/2022-3, připomínky k informační náplni zasílejte správci studijních plánů | Návrh a realizace: I. Halaška (K336), J. Novák (K336) |