====== 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. Snažíme se o maximální podporu, ale bohužel nemůžeme zajistit kompatibilitu se všemi toolchainy. Z těch významných nefunguje pro některá cvičení toolchain MSVC (Visual Studio), a to kvůli příliš staré verzi OpenMP. Pokud používáte Windows, nabízí se dvě alternativy k MSVC, které by měly fungovat se všemi příklady: * MinGW * WSL (Windows Subsystem for Linux) + Linux toolchain Pokud si zvolíte první variantu, je třeba vybrat verzi MinGW s podporou Pythonu, jinak vám v CLionu nebudou fungovat některé funkce (např. debugger). Ověřená verze MinGW, na které kód testujeme je [[https://www.msys2.org/ | MSYS2]]. Pokud se rozhodnete pro WSL, může vás zajímat [[https://www.jetbrains.com/help/clion/how-to-use-wsl-development-environment-in-clion.html | Návod na použití WSL v CLionu]]. Na Linuxu by jak GCC tak CLang měly fungovat. Co se týče vývojových prostředí, testujeme příklady v Clionu a ve Visual Studiu, ale v principu by měly fungovat v libovolném IDE. 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/]] /* Pro spuštění prostředí IntelliJ Idea použijte ''/opt/idea/idea-IC-193.6015.39/bin/idea.sh''. */ ===== Rozvrh Cvičení ===== Formulář na zpětnou vazbu z jednotlivých cvičení: [[ https://forms.gle/sVrzAojhemTKEBSW9 | google form]] ^ ^ Datum ^ Téma cvičení ^ Prezentace ^ Materiály ke cvičení ^ Zadání úloh ^ | **1** | 16.-17.02.2022 | Organizace předmětu a seznámení se s paralelizací | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_01.pdf|tutorial_01.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/decrypt_data.zip|decrypt_data.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_01.zip|tutorial_01.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_01solved.zip|tutorial_01.zip (řešené)]] | | **2** | 23.-24.02.2022 | Vlákna a přístup ke sdílené paměti |[[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_02.pdf|tutorial_02.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_02.zip|tutorial_02.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_02solved.zip|tutorial_02.zip (řešené)]] | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/hw_01|1. domácí úloha]] | | **3** | 02.-03.03.2022 | OpenMP | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_03.pdf|tutorial_03.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_03.zip|tutorial_03.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_03solved.zip|tutorial_03.zip (řešené)]] | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/hw_02|2. domácí úloha]] | | **4** | 9.-10.03.2022 | Konkurentní datové struktury | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_04.pdf|tutorial_04.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_04.zip|tutorial_04.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_04solved.zip|tutorial_04.zip (řešené)]] | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/hw_03|3. domácí úloha]] | | **5** | 16.-17.03.2022 | Dekompoziční techniky | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_05.pdf|tutorial_05.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_05.zip|tutorial_05.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_05solved.zip|tutorial_05.zip (řešené)]] [[https://www.youtube.com/watch?v=FdtOxAV8xTc|video]] | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/hw_04|4. domácí úloha]] | | **6** | 23.-24.03.2022 | Řadící algoritmy | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_06.pdf|tutorial_06.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_06.zip|tutorial_06.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_06solved.zip|tutorial_06.zip (řešené)]] | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/hw_05|5. domácí úloha]] | | **7** | 30.-31.03.2022 | Vektorizace | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_07.pdf|tutorial_07.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_07.zip|tutorial_07.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_07solved.zip|tutorial_07.zip (řešené)]] | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/sem1|1. semestrální práce]] | | **8** | 06.-07.04.2022 | Paralelní maticové operace | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_08.pdf|tutorial_08.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_08.zip|tutorial_08.zip ]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_08solved.zip|tutorial_08.zip (řešené)]] [[https://drive.google.com/file/d/1TGwyQfHuNcUzGWkq6paztwLqYrNHlZQJ/view?usp=sharing|video]] | | **9** | 13.-14.04.2022 | Úvod do distribuovaných výpočtů | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_09.pdf|tutorial_09.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_09.zip|tutorial_09.zip]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_09solved.zip|tutorial_09.zip (řešené)]] /* záznam cvičení v MS teams (čt 16:15) [[https://bit.ly/2VXN6Wb| záznam cvičení]]/* | | | **10** | 20.-21.04.2022 | Detekce selhání v DS. Skalární logické hodiny. | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_10.pdf|tutorial_10.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_10.zip|tutorial_10.zip ]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_10solved.zip|tutorial_10.zip (řešené) ]] /*[[https://bit.ly/3bDz7M7| záznam cvičení]]/* | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/hw_06|6. domácí úloha]] | | **11** | 27.-28.04.2022 | Vektorové logické hodiny. Vzájemné vyloučení v DS. | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_11.pdf|tutorial_11.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_11.zip|tutorial_11.zip ]] [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_11solved.zip|tutorial_11.zip (řešené) ]] /*[[https://drive.google.com/file/d/1zOL8eBn7-KeS4fkW3ANPruS49gNxzcYC/view?usp=sharing| záznam cvičení]]/* | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/hw_07|7. domácí úloha]] | | **12** | 04.-05.05.2022 | Konsenzus v DS. Algoritmus RAFT. | [[ https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_12.pdf|tutorial_12.pdf ]] | /*[[https://drive.google.com/file/d/1utenWOy2njXWkUStw9r3u0JwPG2Rh-SM/view?usp=sharing| záznam cvičení]]/* | [[https://cw.fel.cvut.cz/wiki/courses/b4b36pdv/tutorials/sem2|2. semestrální práce]] | | **13** | 11.-12.05.2022 | Globální stav distribuovaného systému (čtvrteční kruhy). Rektorský den (středeční kruhy). | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_13.pdf|tutorial_13.pdf]] | [[https://cw.fel.cvut.cz/wiki/_media/courses/b4b36pdv/tutorials/tutorial_13.zip|tutorial_13.zip ]] /*[[https://drive.google.com/file/d/1gI5ijBMGoxl9H-RPmK-wE4qEeXeyUzQf/view?usp=sharing| záznam cvičení]]/* | | | **14** | 18.-19.05.2022 | Globální stav distribuovaného systému (středeční kruhy). Volno (čtvrteční kruhy). | | | |