Programování vědeckých výpočtů v jazyce Julia
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
B0M36SPJ | KZ | 4 | 2P+2C | česky |
- Garant předmětu:
- Tomáš Pevný, Václav Šmídl
- Přednášející:
- Tomáš Pevný, Václav Šmídl
- Cvičící:
- Jan Franců, Niklas Maximilian Heim, Tomáš Pevný, Václav Šmídl, Matěj Zorek
- Předmět zajišťuje:
- katedra počítačů
- Anotace:
-
V rámci předmětu budou představeny unikátní vlastnosti jazyka Julia, např. jeho typový systém, návrhový vzor multiple dispatch, metaprogramování, generování a manipulace kódu. Tyto vlastnosti umožňují velmi rychlý a snadný návrh algoritmů, jejich výpočetní efektivita je srovnatelná s implementací v nízko úrovňovém jazyce (např. C nebo Fortran). Tyto koncepty a jejich efektivita budou představeny na běžných vědeckých úlohách jako je implementace obecného algoritmu gradientního sestupu a výpočet diferenciálních rovnic. Bude ukázáno, že obecně navržené základní algoritmy umožňují bez modifikace i pokročilé funkce jako je výpočet propagace neurčitosti v rámci řešení diferenciální rovnice nebo optimalizaci řešení diferenciální rovnice metodou gradientního sestupu. V rámci cvičení budou studenti tvořit vlastní implementace těchto algoritmů.
- Požadavky:
-
Předmět předpokládá pouze základy programování, základy optimalizace a diferenciálních rovnic. Výhodou je absolvování předmětu Funkcionální programování, případně bakalářského kurzu jazyka Julia.
- Osnova přednášek:
-
1.Úvod do Julie, syntax, funkce, základní konstrukty
2.Typový systém a koncept multiple dispatch
3.Balíčkovací systém, prostředí, testy, integrace
4.Návrhové vzory, scope, closure, interface
5.Ladění výpočetní efektivity, benchmarks, profilování
6.Introspekce jazyka, abstract syntax tree, základní modifikace kódu
7.Makra, rozdíl oproti funkcím, implementace doménových jazyků
8.Úvod do automatického derivování
9.Manipulace s reprezentací kódu, automatické generování kódu
10.Různé úrovně paralelního programování
11.Programování na grafické kartě
12.Propagace neurčitosti diferenciální rovnicí
13.Optimalizace ODE z měřených dat
- Osnova cvičení:
-
1.Seznámení s prostředím, základní úlohy
2.Typový systém čísel, návrh typu pro intervalovou aritmetiku včetně operací
3.Vytvoření balíčku pro intervalovou aritmetiku
4.Návrhové vzory v implementaci gradientního sestupu (minibatching, ukládání mezivýsledků, atd.)
5.Odladění neefektivně napsaných příkladů
6.Výpis abstract syntax tree funkce jako stromové struktury
7.Tvorba makra pro zápis řetězení funkcí
8.Implementace metody forwarddiff s duálními čísly
9.Implementace reverse diff manipulací kódu
10.Paralelizace výpočtů lineární algebry
11.Implementace intervalové aritmetiky na GPU
12.Propagace neurčitosti modelem Lotka-Volterra
13.Učení parametrů Lotka-Voltera modelu z dat
- Cíle studia:
- Studijní materiály:
-
Povinná literatura:
1. Tom Kwong , Hands-On Design Patterns and Best Practices with Julia, 2019
Doporučená literatura:
2.Bezanson, Jeff, et al. Julia: A fresh approach to numerical computing. SIAM review 59.1 (2017): 65-98.
3.Lauwens, Ben, and Allen B. Downey. Think Julia: how to think like a computer scientist. O'Reilly Media, 2019.
4.Julia Documentation. https://docs.julialang.org/en/v1/manual/documentation/index.html
- Poznámka:
- Další informace:
- https://juliateachingctu.github.io/Scientific-Programming-in-Julia/dev/
- Rozvrh na zimní 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 Út St Čt Pá - Rozvrh na letní semestr 2024/2025:
- Rozvrh není připraven
- Předmět je součástí následujících studijních plánů: