Table of Contents

Cvičení

Na cvičeních opakujeme nejdůležitější věci z přednášek a především zkoušíme paralelní programování v praxi. K programování je možné využít buď počítače v učebnách, nebo svoje vlastní laptopy. V každém případě je potřeba se na to připravit již před prvním cvičením! Je potřeba mít připravený C++ toolchain, a nějaké vývojové prostředí.

Počítače v učebnách

Pro přihlášení na počítače v učebnách je nejprve (pokud jste tak již neučinili) nutné si vygenerovat heslo do učebny (viz https://www.felk.cvut.cz/). Následně se přihlásíte tímto heslem a ČVUT loginem bez domény.

C++ toochain je zde připraven. Jako vývojové prostředí je nainstalovaný CLion. Pro spuštění CLionu použijte:

/opt/clion-2021.2.1/bin/clion.sh

Vlastní počítače

Pro programování na cvičeních je také možné využít vlastní počítače. Tam si ale musíte toolchain i vývojové prostředí sami nainstalovat a před cičením otestovat, že vám všechno funguje.

Oficiálně podporované compilery jsou GCC 11 a Clang 12 a novější (je nutná podpora C++20, OpenMP 4 a std::experimental::simd). MSVC a MinGW nejsou podporované, na Windows doporučujeme použít WSL2 (pak vás může zajímat návod na použití WSL v CLionu). Jako vývojové prostředí doporučujeme CLion, na kterém vše testujeme, ale v principu by měl fungovat jakýkoliv editor, pokud podporuje CMake projekty.

Linux / WSL

Pokud používáte Linux, at už nativně nebo ve WSL, ověřte si prosím před cvičením, že máte aktuální verzi distribuce i všech balíčků. Specificky na Ubuntu je potřeba alespoň Ubuntu 22.04 – pokud máte Ubuntu 20.04 (viz lsb_release -a), je nutné před cvičením updatovat (buď v GUI, nebo zavoláním příkazu sudo do-release-upgrade a následně dvojice příkazů sudo apt update && sudo apt dist-upgrade). Na WSL také updatujte samotné WSL pomocí příkazu wsl –update (je třeba volat z Windows, nikoliv z WSL).

MacOS

Pokud používáte MacOS (Apple silicon), pak můžete OpenMP nainstalovat takto:

  1. Instalace package manageru brew pro MacOS: $ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
  2. Instalace llvm: $ brew install llvm
  3. Nalezení cesty ke kompilátoru clang (clang je kompilátor využívaný llvm a defaultně obsahuje OpenMP https://llvm.org/): Potřebujeme najít clang, který si nainstaloval brew. Cesta by tedy měla vypadat nějak takto /opt/homebrew/Cellar/llvm/15.0.7_1/bin/clang.
  4. Cesty k clang zadáme do CLionu.

Hlavně si vše otestujte ještě před cvičením, z časových důvodů není možné na cvičeních řešit, proč se vám kód ke cvičením nezkompiluje, proč vám nejde spustit Clion, apod.

Licence JetBrains

Jako studenti máte nárok zdarma používat produkty JetBrains. s těmito prostředími (CLion, IDEA) můžete pracovat také na PDV, jsou nainstalované v učebnách, a budete na nich skládat praktickou zkoušku. Licenci je ale třeba aktivovat: https://download.cvut.cz/jetbrains/

Rozvrh cvičení

Formulář na zpětnou vazbu z jednotlivých cvičení: google form

Rozvrh předmětu.

Datum Téma cvičení Prezentace Materiály ke cvičení Zadání úloh
1 21.-22.02.2024 Organizace předmětu a seznámení se s paralelizací 01.pdf 01-intro.zip
01-intro-solution.zip
decrypt_data.zip
2 28.-29.02.2024 Vlákna a přístup ke sdílené paměti 02.pdf tutorial_02.zip
tutorial_02.zip (řešené)
02-cpp-threads.zip
02-cpp-threads-solution.zip
1. domácí úloha
3 06.-07.03.2024 OpenMP 03.pdf tutorial_03.zip
tutorial_03.zip (řešené)
03-openmp.zip
03-openmp-solution.zip
2. domácí úloha
quiz
4 13.-14.03.2024 Konkurentní datové struktury 04.pdf tutorial_04.zip
tutorial_04.zip (řešené)
3. domácí úloha
quiz
5 20.-21.03.2024 Dekompoziční techniky 05.pdf tutorial_05.zip
tutorial_05.zip (řešené)
4. domácí úloha
quiz
6 27.-28.03.2024 Řadící algoritmy 06.pdf tutorial_06.zip
tutorial_06_solution2024.zip (řešené)
5. domácí úloha
quiz
7 03.-04.04.2024 Vektorizace 07.pdf tutorial_07.zip
tutorial_07.zip (řešené)
07-simd.zip
07-simd-solution.zip
quiz
8 10.-11.04.2024 Prohledávání stavového prostoru. Paralelní maticové operace 08.pdf tutorial_08.zip
tutorial_08.zip (řešené)
08-sparse-matrix.zip
08-sparse-matrix-solution.zip
1. semestrální práce
9 17.-18.04.2024 Úvod do distribuovaných výpočtů 09.pdf tutorial_09.zip
tutorial_09.zip (řešené)
10 24.-25.04.2024 Detekce selhání v DS. Skalární logické hodiny 10.pdf tutorial_10.zip
tutorial_10.zip (řešené)
6. domácí úloha
quiz
11-12 02. 05. 2024 (Čt - čtvrteční rozvrh), 09.05.2024 (Čt - středeční rozvrh) Vektorové logické hodiny. Vzájemné vyloučení v DS 11.pdf tutorial_11.zip 7. domácí úloha
quiz A
quiz B
13 15.-16.05.2024 Konsenzus v DS. Algoritmus RAFT 12.pdf 2. semestrální práce
14 22.-23.05.2024 Globální stav distribuovaného systému 13.pdf