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
Last revision Both sides next revision
courses:b4b36pdv:start [2019/05/24 11:02]
courses:b4b36pdv:start [2024/02/16 23:40]
kafkamat
Line 1: Line 1:
 +====== B4B36PDV – Paralelní a distribuované výpočty ======
 +===== Obecné informace =====
 +  * Rozvrh: [[https://​intranet.fel.cvut.cz/​cz/​education/​rozvrhy-ng.B232/​public/​html/​predmety/​47/​02/​p4702806.html|Rozvrh B4B36PDV]]
 +  * Přednášející:​ [[http://​cs.felk.cvut.cz/​en/​people/​marecjak|Jakub Mareček]], [[http://​cs.felk.cvut.cz/​en/​people/​jakobmic|Michal Jakob]]
 +  * Cvičící (paralelní část): [[https://​dsn.felk.cvut.cz/​wiki/​lide/​macejko|Peter Macejko]], [[kafkamat@fel.cvut.cz|Matěj Kafka]], [[sloukmic@fel.cvut.cz|Michal Slouka]], [[mikhada1@fel.cvut.cz|Daria Mikhaylovskaya]]
 +  * Cvičící (distribuovaná část): [[https://​dsn.felk.cvut.cz/​wiki/​lide/​macejko|Peter Macejko]], [[http://​cs.felk.cvut.cz/​en/​people/​mrkosja1|Jan Mrkos]], [[http://​cs.felk.cvut.cz/​en/​people/​milecdav|David Milec]]
 +  * Odevzdávání domácích úloh: [[https://​cw.felk.cvut.cz/​brute/​student/​|BRUTE]]
 +  * Konzultační hodiny: na vyžádání
 +  * Komunikace: Oficiální komunikační kanál je e-mail, pro neformální komunikaci lze využít kanál ''#​pdv''​ na [[https://​discord.com/​invite/​YZjJbkvfaS|fakultním Discord serveru]].
  
 +===== Studijní materiály =====
 +
 +==== Paralelní počítání ====
 +  * Standardní učebnice: The Art of Multiprocessor Programming (by Maurice Herlihy, Nir Shavit, Victor Luchangco, and Michael Spear). Vydání z roku 2012 je zdarma dostupné [[https://​dl.acm.org/​doi/​book/​10.5555/​2385452|on-line]] po přihlášení přes ČVUT SSO,
 +  * Příklady ze standardní dokumentace OpenMP v [[https://​github.com/​OpenMP/​Examples/​tree/​master/​sources|C]] i [[https://​www.openmp.org/​wp-content/​uploads/​openmp-examples-5-0-1.pdf|PDF]], ​
 +  * Velmi praktické rady: Using OpenMP (Portable Shared Memory Parallel Programming,​ by Barbara Chapman, Gabriele Jost and Ruud van der Pas), 2007,
 +  * Neformální úvod: Programming on Parallel Machines (by Norm Matloff), 2012, k dispozici zdarma [[http://​heather.cs.ucdavis.edu/​parprocbook|on-line]]
 +
 +==== Distribuované počítání ====
 +  * Standardní učebnice: Distributed Systems (by Maarten van Steen, Andrew S. Tanenbaum), 3.01 Edition, 2017, k dispozici [[https://​www.distributed-systems.net/​index.php/​books/​ds3/​|on-line]]
 +  * Běžná učebnice: Distributed Systems: Concepts and Design (by George Coulouris Jean Dollimore Tim Kindberg Gordon Blair), 5th Edition), 2011
 +
 +===== Hodnocení předmětu =====
 +Celkově můžete získat maximálně 100 bodů z předmětu a získat známku A-F (<50b = F, 50-59 = E, ..., 90-100 = A).
 +Body lze získat za domácí úkoly v semestru (celkem maximálně 40b) a ze zkoušek (maximálně 60b).
 +
 +==== Zápočet: Aktivita v semestru (max 40b) ====
 +Předmět se skládá ze dvou tématických bloků, body v semestru můžete získat za vypracování semestrálních úloh:
 +  * Paralelní výpočty (max 22 bodů):
 +      * 5 malých programovacích úloh (max 10 bodů)
 +      * Semestrální práce (max 12 bodů)
 +  * Distribuované výpočty (max 18 bodů):
 +      * 2 malé úlohy (max 4 body)
 +      * Semestrální práce (max 14 bodů)
 +  * U všech úloh se pro hodnocení vždy uvažuje poslední odevzdané řešení.
 +  * Pro udělení zápočtu je je potřeba získat alespoň **50% bodů, tj. 20 bodů** ze 40.
 +
 +==== Zkouška (max 60b) ====
 +  * Programovací část zkoušky z paralelní části předmětu (max 20 bodů, pro úspěšné složení nutno získat **alespoň 10b**, započítává se poslední pokus).
 +  * Teoretická část zkoušky (max 40 bodů, pro úspěšné složení nutno získat **alespoň 20b**). Při absolvování více úspěšných pokusů se uvažuje maximální dosažený počet bodů.
 +  * Pro úspěšné složení zkoušky je nutné úspěšně složit **obě části zkoušky** (tj. programovací i teoretickou zkoušku). ​
 +
 +==== Pravidla samostatné práce ====
 +Při tvorbě úloh se řiďte [[help:​common:​plagiaty_opisovani|pravidly samostatné práce]].
 +
 +===== Zkoušky =====
 +
 +==== Pravidla zkoušky: ====
 +
 +Vzhledem k tomu, že zadání zkoušky bude naprogramování 2 menších jednodušších úkolů, které vycházejí z úkolů probíraných na přednášce a cvičení, nemůžete během zkoušky používat žádné vlastní připravené kódy ani materiály. K dispozici bude standardní linux desktop s vývojovým prostředím CLion. K dispozici bude přístup na tyto webové stránky s referencemi na C++ (en.cppreference.com) a vektorové instrukce (software.intel.com/​sites/​landingpage/​IntrinsicsGuide/​) a taky dokumentaci k OpenMP (z openmp.org). ​
 +
 +K dispozici budete mít lokálně binární kód se vzorovým řešením pro porovnání škálovatelnosti,​ odevzdávání a automatická evaluace bude prostřednictvím systému (ne BRUTE) se stejnou HW konfigurací.  ​
 +
 +\\
 +=== Příklad zkoušky z minulého roku ===
 +
 +<​code>​
 +* Upozornění *
 +Váš kód musí být korektní z hlediska vícevláknového přístupu ke sdíleným proměnným. ​
 +Pokud nezabezpečíte synchronizaci,​ budeme Vaše řešení ručně penalizovat.
 +
 +Úloha 1:
 +Vaším úkolem je v daném poli std::​vector<​std::​string>​ vector projít slova a zjistit, ​
 +jaká je Levenshteinho vzdálenost každých dvou slov v tomto poli obsažených. Zároveň ​
 +musíte najít i nejnižší index dvojice slov takový, že vzdálenost mezi těmito slovy 
 +je největší.
 +
 +Zparalelizujte metodu distances (pouze tuto metodu, zadnou jinou) v souboru ​
 +levenshtein.cpp,​ která vrátí sumu vzdáleností slov ve vector každého s každým. ​
 +Index s maximální vzdáleností uložte do proměnné maxIdx. ​
 +
 +Úloha 2:
 +Vaším úkolem je paralelizovat aplikaci lokálního filtru ve čtvercové matici čísel ​
 +na základě čtyř-okolí prvku. Filtr se aplikuje v iteracích, přičemž v každé iteraci ​
 +se pro každý prvek table(i,j) aplikuje výpočet:
 +
 +table(i,j) = sqrt( (table(i,​j)^2 + table(i-1,​j)^2 + table(i+1,​j)^2 + table(i,​j-1)^2 + table(i,​j+1)^2)/​3 )
 +
 +sekvenčně od prvku 0,0 po řádcích (pokud prvky v okolí přesahují index matice, použije se hodnota 0).
 +Zparalelizujte metodu filtering v souboru filter.cpp, která tento výpočet provádí.
 +</​code>​
 +
 +Balíček je možné stáhnout {{ :​courses:​b4b36pdv:​zk_05.zip |zde}}. ​
 +
 +==== Teoretický termín ====
 +
 +Na teoretický termín se můžete zapisovat klasicky pomocí KOSu, písemka bude trvat 90 minut, bude se skládat z otázek z paralelní (15b.) i distribuované (25b.) části. Bude mít formu testu sestávajícího z uzavřených otázek vesměs typu multiple choice, tj. správně libovolný počet možností. ​
 +
 +V rámci jedné multiple-choice otázky v testu můžete získat mínusové body za špatné odpovědi, ale za jednu otázku je minimální počet bodů 0 (tzn. z testu jako celku není možné dostat záporný počet bodů).
 +
 +===== Průběh ukončení předmětu =====
 +Pro úspěšné ukončení předmětu musíte splnit 3 na sobě nezávislé podmínky:
 +{{ :​courses:​b4b36pdv:​ukonceni_v1.3.png?​nolink |}}
courses/b4b36pdv/start.txt · Last modified: 2024/03/14 02:52 by kafkamat