Notice
This page is located in a preparation section till 20.02.2023.

B4M36ESW - Efektivní software / Effective Software

O předmětu / About

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

Within the course of Efficient software you will get familiar with the area of software and algorithm optimization under limited resources. The course is focused on the efficient usage of modern hardware architectures - multi-core and multi-processor systems with shared memory. Students will practically implmenet and use presented techniques in C and Java. Main topics are: code optimization, effective data structures and processor cache usage, data structures in multi-threaded applications and implementation of efficient network servers.

Způsob hodnocení předmětu / Assessment

Hodnocení předmětu je založeno na bodovém systému, kde výsledná klasifikace se stanovuje dle klasifikační stupnice ve Studijním a zkušebním řádu ČVUT, článek 11. 60 bodů může student získat za práci během semestru a 30 bodů za písemnou zkoušku. Ústní zkouška je nepovinná a student může dle svých znalostí získat až 10 bodů. Pro získání zápočtu musí student získat minimálně 30 bodů za práci během semestru a odevzdat všechny požadované úlohy. Pro úspěšné zakončení předmětu musí student získat minimálně 20 bodů za zkoušku.

Graded assessment is based on the point evaluation, where the final grade is given by the evaluation scale The study and examination code of CTU, article 15. A student can obtain 60 points for the work during the practical part of the course and 30 points for the written final evaluation. Oral examination is optional and a student can obtain up to 10 points. In order to get zápočet/basic assessment (the condition prior final examination), a student must have at least 30 points for the work during the practical part of the course and all tasks must be successfully submitted. A student can pass examination if he/she has at least 20 points from final examination. The final grade is given by the sum of points according to the evaluation scale.

Příklad písemné zkoušky / Example of exam test

Na vypracování obou částí je 60 minut. / Time limit for both parts is 60 minutes.

Přednášky / Lectures

Lectures are streamed to YouTube.

Datum/Date Přednáška / Lecture Materiály / Materials
20.2.2023 Úvod: jak psát efektivní programy, moderní počítačové architektury, spotřeba energie, profiling
Introduction, modern computer architecture, compiler, profiling
slides
27.2.2023 Měření výkonnosti programu, metriky, statistiky, WCET, timestamping
Benchmarking, measurements, statistics
slides
6.3.2023 Bentley's rules, C compiler slides1 slides2 code
13.3.2023 Škálovatelná synchronizace - od mutexů k RCU (read-copy-update), transakční paměť, škálovalné API, Scalable synchronization slides
20.3.2023 Přístup k paměti - efektivní programování s použitím vyrovnávací paměti, dynamická alokace paměti (malloc, NUMA, …)
Memory, caches, allocators
slides animations
27.3.2023 Serializace datových struktur - JSON, XML, protobufs, AVRO, cap’n’proto, mmap/sdílená paměť
Data structure serialization
slides
3.4.2023 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
Virtual machine, byte-code, (de-)compilers, disassembler, profiling
slides
10.4.2023 Velikonoce
17.4.2023 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)
Data races, synchronization, atomic operations, non-blocking algorithms
slides
24.4.2023 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
Non-blocking I/O, C10K, efficient networking
slides
4.5.2023 (čtvrtek) Reprezentace objektu v JVM - statická a dynamická analýza paměti, reprezentace dat, datové struktury redukující zátěž správy paměti
JVM - Memory analysis, data structures, collections for performance
slides
9.5.2023 (úterý) JVM - alokace objektu, bloom filters, typy odkazů na instance, efektivní vyrovnávací paměť
JVM - Object allocation, bloom filters, references, effective caching
slides
15.5.2023 Správa paměti v JVM - organizace paměti, algoritmy správy paměti a jejich parametrizace
Memory Management in JVM – Memory Layout, Garbage Collectors
slides
22.5.2023 Virtualizace (IOMMU, SR-IOV, PCI pass-through, virtio, …)
Virtualization (IOMMU, SR-IOV, PCI pass-through, virtio, …)
slides code

Doplňková literatura / Literature

  • MIT: Performance-engineering-of-software-systems
  • Oaks, S.: Java Performance: 2nd Edition. O'Reilly, USA 2020.
  • Jones, R., Hosking, A., Moss, E.: The Garbage Collection Handbook - The Art of Automatic Memory Management. CRC Press, USA 2012.
  • Herlihy, M., Shavit, N.: The Art of Multiprocessor Programming. Morgan Kaufman, 2008.
  • Fog, A.: The microarchitecture of Intel, AMD and VIA CPU, 2016.(online: http://www.agner.org/optimize/microarchitecture.pdf)
  • Drepper U.: What every programmer should know about memory, 2007
  • Jain, R.: The Art of Computer Systems Performance Evaluation. Wiley, New York 1991. (slides, book)
  • Lilja, D. J.: Measuring Computer Performance: A Practitioner's Guide. Cambridge University Press, 2000. (book web site, Supplemental Teaching Materials)
courses/b4m36esw/start.txt · Last modified: 2023/01/18 11:43 by sislakd