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:start [2018/06/14 21:28]
courses:b4b36pdv:start [2024/03/14 02:52] (current)
kafkamat [Zápočet: Aktivita v semestru (max 40b)]
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ů)
 +  * 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 |}}