Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
courses:b4b36pdv:tutorials:start [2018/05/25 12:20]
courses:b4b36pdv:tutorials:start [2024/04/19 10:28] (current)
mrkosja1 [Rozvrh cvičení]
Line 1: Line 1:
 +====== 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 [[https://​www.jetbrains.com/​help/​clion/​how-to-use-wsl-development-environment-in-clion.html|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:
 +  - Instalace package manageru ''​brew''​ pro MacOS: ''​$ /bin/bash -c "​$(curl -fsSL https://​raw.githubusercontent.com/​Homebrew/​install/​HEAD/​install.sh)"''​
 +  - Instalace ''​llvm'':​ ''​$ brew install llvm''​
 +  - 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''​.
 +  - 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í: [[https://​forms.gle/​q6dTqGkjFfMdKMTr5|google form]]
 +
 +[[ https://​intranet.fel.cvut.cz/​cz/​education/​rozvrhy-ng.B232/​public/​html/​predmety/​47/​02/​p4702806.html | 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í ​          | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​01.pdf|01.pdf]] | [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​01-intro.zip|01-intro.zip]] \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​01-intro-solution.zip|01-intro-solution.zip]] \\ {{courses:​b4b36pdv:​tutorials:​decrypt_data.zip}} | |
 +| **2**     | 28.-29.02.2024 | Vlákna a přístup ke sdílené paměti ​                         | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​02.pdf|02.pdf]] | {{courses:​b4b36pdv:​tutorials:​tutorial_02.zip}} \\ {{courses:​b4b36pdv:​tutorials:​tutorial_02solved.zip|tutorial_02.zip (řešené)}} \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​02-cpp-threads.zip|02-cpp-threads.zip]] \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​02-cpp-threads-solution.zip|02-cpp-threads-solution.zip]] | [[courses:​b4b36pdv:​tutorials:​hw_01|1. domácí úloha]] ​    |
 +| **3**     | 06.-07.03.2024 | OpenMP ​                                                     | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​03.pdf|03.pdf]] | {{courses:​b4b36pdv:​tutorials:​tutorial_03.zip}} \\ {{courses:​b4b36pdv:​tutorials:​tutorial_03solved.zip|tutorial_03.zip (řešené)}} \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​03-openmp.zip|03-openmp.zip]] ​          \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​03-openmp-solution.zip|03-openmp-solution.zip]] ​          | [[courses:​b4b36pdv:​tutorials:​hw_02|2. domácí úloha]] \\ [[https://​forms.gle/​faCt4aigFxp1RGDr9|quiz]] |
 +| **4**     | 13.-14.03.2024 | Konkurentní datové struktury ​                               | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​04.pdf|04.pdf]] | {{courses:​b4b36pdv:​tutorials:​tutorial_04.zip}} \\ {{courses:​b4b36pdv:​tutorials:​tutorial_04solved.zip|tutorial_04.zip (řešené)}} | [[courses:​b4b36pdv:​tutorials:​hw_03|3. domácí úloha]] ​ \\ [[https://​forms.gle/​iWVGs7AkhXx1e8ceA|quiz]] ​  |
 +| **5**     | 20.-21.03.2024 | Dekompoziční techniky ​                                      | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​05.pdf|05.pdf]] | {{courses:​b4b36pdv:​tutorials:​tutorial_05.zip}} \\  {{courses:​b4b36pdv:​tutorials:​tutorial_05solved.zip|tutorial_05.zip (řešené)}} \\ /* [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​05-openmp2.zip|05-openmp2.zip]] /* /* \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​05-openmp2-solution.zip|05-openmp2-solution.zip]] /* | [[courses:​b4b36pdv:​tutorials:​hw_04|4. domácí úloha]] ​ \\  [[https://​forms.gle/​z88aBU28zekVNXfv6|quiz]] ​    |
 +| **6**     | 27.-28.03.2024 | Řadící algoritmy ​                                           | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​06.pdf|06.pdf]] |  {{courses:​b4b36pdv:​tutorials:​tutorial_06.zip}} ​ \\ {{courses:​b4b36pdv:​tutorials:​tutorial_06_solution2024.zip|tutorial_06_solution2024.zip (řešené)}}/​* {{courses:​b4b36pdv:​tutorials:​tutorial_06solved.zip|tutorial_06.zip (řešené)}} /* | [[courses:​b4b36pdv:​tutorials:​hw_05|5. domácí úloha]] ​ \\  [[https://​forms.gle/​YFFKYMnQhLQeEorD7|quiz]] ​  |
 +| **7**     | 03.-04.04.2024 | Vektorizace ​                                                | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​07.pdf|07.pdf]] |  {{courses:​b4b36pdv:​tutorials:​tutorial_07.zip}} ​ \\ {{courses:​b4b36pdv:​tutorials:​tutorial_07solved.zip|tutorial_07.zip (řešené)}} \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​07-simd.zip|07-simd.zip]] \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​07-simd-solution.zip|07-simd-solution.zip]] | [[https://​forms.gle/​YGT42SBWmYW4s87HA|quiz]] ​ |
 +| **8**     | 10.-11.04.2024 | Prohledávání stavového prostoru. Paralelní maticové operace | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​08.pdf|08.pdf]] |  {{courses:​b4b36pdv:​tutorials:​tutorial_08.zip}} ​ /* \\  {{courses:​b4b36pdv:​tutorials:​tutorial_08solved.zip|tutorial_08.zip (řešené)}} /* \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​08-sparse-matrix.zip|08-sparse-matrix.zip]] /* \\ [[https://​pdv.pages.fel.cvut.cz/​pdv-private/​labs/​08-sparse-matrix-solution.zip|08-sparse-matrix-solution.zip]] /* | [[courses:​b4b36pdv:​tutorials:​sem1|1. semestrální práce]] |
 +| **9**     | 17.-18.04.2024 | Úvod do distribuovaných výpočtů ​                            | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​09.pdf|09.pdf]] | {{courses:​b4b36pdv:​tutorials:​tutorial_09.zip}} ​ {{courses:​b4b36pdv:​tutorials:​tutorial_09solved.zip|tutorial_09.zip (řešené)}} ​ |                                                          |
 +| **10** ​   | 24.-25.04.2024 | Detekce selhání v DS. Skalární logické hodiny ​              | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​10.pdf|10.pdf]] | /* {{courses:​b4b36pdv:​tutorials:​tutorial_10.zip}} /* /* {{courses:​b4b36pdv:​tutorials:​tutorial_10solved.zip|tutorial_10.zip (řešené)}} /* | [[courses:​b4b36pdv:​tutorials:​hw_06|6. domácí úloha]] ​    |
 +| **11-12** | 02. 05. 2024 (Čt - čtvrteční rozvrh), 09.05.2024 ([[ https://​intranet.fel.cvut.cz/​cz/​education/​harmonogram.html |Čt - středeční rozvrh]]) | Vektorové logické hodiny. Vzájemné vyloučení v DS           | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​11.pdf|11.pdf]] | /* {{courses:​b4b36pdv:​tutorials:​tutorial_11.zip}} /* /* {{courses:​b4b36pdv:​tutorials:​tutorial_11solved.zip|tutorial_11.zip (řešené)}} /* | [[courses:​b4b36pdv:​tutorials:​hw_07|7. domácí úloha]] ​    |
 +| **13** ​   | 15.-16.05.2024 | Konsenzus v DS. Algoritmus RAFT                             | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​12.pdf|12.pdf]] | | [[courses:​b4b36pdv:​tutorials:​sem2|2. semestrální práce]] |
 +| **14** ​   | 22.-23.05.2024 | Globální stav distribuovaného systému ​                      | [[https://​github.com/​aicenter/​PDV-tutorials/​releases/​download/​v0.0.1/​13.pdf|13.pdf]] | /* {{courses:​b4b36pdv:​tutorials:​tutorial_13.zip}} /* /* {{courses:​b4b36pdv:​tutorials:​tutorial_13solved.zip|tutorial_13.zip (řešené)}} /* |                                                          |