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

Efektivní software

Přihlášení do KOSu pro zápis předmětu Zobrazit rozvrh
Kód Zakončení Kredity Rozsah Jazyk výuky
B4M36ESW Z,ZK 6 2P+2C česky
Vztahy:
Předmět B4M36ESW může při kontrole studijních plánů nahradit předmět A4M35OSP
Předmět B4M36ESW nesmí být zapsán, je-li v témže semestru zapsán anebo již dříve absolvován předmět A4M35OSP (vztah je symetrický)
Předmět B4M36ESW nesmí být zapsán, je-li v témže semestru zapsán anebo již dříve absolvován předmět BE4M36ESW (vztah je symetrický)
Předmět B4M36ESW nesmí být zapsán, je-li v témže semestru zapsán anebo již dříve absolvován předmět BE4M36ESW (vztah je symetrický)
Předmět B4M36ESW může být splněn v zastoupení předmětem BE4M36ESW
Garant předmětu:
David Šišlák
Přednášející:
Michal Sojka, David Šišlák
Cvičící:
Marek Cuchý, Joel Matějka, Michal Sojka, David Šišlák, Jiří Vlasák
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. 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.

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

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

Poznámka:
Další informace:
https://esw.pages.fel.cvut.cz/
Rozvrh na zimní semestr 2024/2025:
Rozvrh není připraven
Rozvrh na letní semestr 2024/2025:
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.
Sojka M.

12:45–14:15
(přednášková par. 1)
Karlovo nám.
Šrámkova posluchárna K9
místnost KN:E-310

16:15–17:45
(přednášková par. 1
paralelka 101)

Karlovo nám.
Lab K310 Linux
místnost KN:E-307

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

Karlovo nám.
HW-lab K307
místnost KN:E-311

16:15–17:45
(přednášková par. 1
paralelka 103)

Karlovo nám.
Lab K311
Út
St
Čt

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