Popis předmětu - BE4M36ESW

Přehled studia | Přehled oborů | Všechny skupiny předmětů | Všechny předměty | Seznam rolí | Vysvětlivky               Návod
BE4M36ESW Effective Software
Role:PO Rozsah výuky:2P+2C
Katedra:13136 Jazyk výuky:EN
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://esw.pages.fel.cvut.cz/

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. Introduction, modern computer architecture, C compilers.
2. Bentley's rules, C compiler, profiling.
3. Benchmarking, measurements, metrics, statistics, WCET, timestamping.
4. Scalable synchronization – from mutexes to RCU (read-copy-update), transactional memory, scalable API.
5. Memory access – efficient programming with caches, dynamic memory allocation (malloc, NUMA, ...)
6. Serialization of data structures – JSON, XML, protobufs, AVRO, cap'n'proto, mmap/shared memory.
7. Program run – virtual machine, byte-code, Java compiler, JIT compiler, relation to machine code, byte-code analysis, dissasembly of Java byte-code, optimization in compilers, program performance analysis, profiling.
8. Data concurrency in JVM – multi-threaded access to data, locks monitoring, atomic operations, lock-less/block-free data structures, non-blocking algorithms (queue, stack, set, dictionary), data races, synchronization.
9. Efficient servers, C10K, non-blocking I/O, efficient networking, threads.
10. JVM – Memory analysis (dynamic/static), data structures, collections for performance.
11. JVM – Object allocation, bloom filters, references, effective caching.
12. Virtualization (IOMMU, SR-IOV, PCI pass-through, virtio, …).
13. Memory Management in JVM – Memory Layout, Garbage Collectors.

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 Java

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

Plán Obor Role Dop. semestr
MEOI4_2018 Computer Engineering PO 2
MEOI6_2018 Software Engineering PO 2


Stránka vytvořena 3.12.2024 17:51:08, semestry: L/2024-5, L/2023-4, Z/2024-5, Z/2025-6, 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)