Popis předmětu - B4M36ESW

Přehled studia | Přehled oborů | Všechny skupiny předmětů | Všechny předměty | Seznam rolí | Vysvětlivky               Návod
B4M36ESW Efektivní software Rozsah výuky:2P+2C
Garanti:Šišlák D. Role:PO Jazyk výuky:CS
Vyučující:Sojka M., Šišlák D. Zakončení:Z,ZK
Zodpovědná katedra:13136 Kreditů:6 Semestr:L

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ů.

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: 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)

Požadavky:

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

Předmět je zahrnut do těchto studijních plánů:

Plán Obor Role Dop. semestr
MPOI4_2018 Počítačové inženýrství PO 2
MPOI4_2016 Počítačové inženýrství PO 2
MPOI6_2016 Softwarové inženýrství PO 2
MPOI6_2018 Softwarové inženýrství PO 2


Stránka vytvořena 13.12.2019 17:50:30, semestry: Z,L/2020-1, L/2018-9, Z,L/2019-20, 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)
Za obsah odpovídá: doc. Ing. Ivan Jelínek, CSc.