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 [2019/05/24 17:59] (current)
bosanbra [Zkoušky]
Line 1: Line 1:
 +====== B4B36PDV – Paralelní a distribuované výpočty ======
 +===== Obecné informace =====
 +  * Přednášky:​ Středa, 12:45 (KN:E-107)
 +  * Cvičení: Středa 14:30, 16:15 ; Čtvrtek 14:30, 16:15, 18:00
 +  * Přednášející:​ [[http://​cs.felk.cvut.cz/​en/​people/​bosanbra|Branislav Bošanský]],​ [[http://​cs.felk.cvut.cz/​en/​people/​jakobmic|Michal Jakob]]
 +  * Cvičící: [[http://​cs.felk.cvut.cz/​en/​people/​horakka5|Karel Horák]], [[http://​cs.felk.cvut.cz/​en/​people/​tomaspe7|Petr Tomášek]],​ [[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/​fiserdan|Daniel Fišer]]
 +  * Konzultační hodiny: na vyžádání
  
 +===== Důležité odkazy =====
 +  * Fórum: [[https://​cw.felk.cvut.cz/​forum/​forum-1566.html]]
 +  * Odevzdávací systém: [[https://​cw.felk.cvut.cz/​brute/​]]
 +  * Link na ankety: [[https://​goo.gl/​a6BEMb]]
 +  * Finální anketa cvičení: TBA
 +===== 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).
 +Předmět se skládá ze dvou tématických bloků a body můžete získat za vypracování semestrálních úloh a za zkoušku:
 +  * 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ů)
 +  * Ze semestru je potřeba získat alespoň 50% bodů, tj. 20 bodů ze 40.
 +  * Programovací zkouška (max 20 bodů, pro složení předmětu nutno získat alespoň 10b)
 +  * Teoretická zkouška (max 40 bodů, pro složení předmětu nutno získat alespoň 20b)
 +
 +===== Zkoušky =====
 +
 +Vzhledem k tomu, že dle informací studijního není možné zkoušku ze 2 častí spravovat pomocí KOSu, tak zápis na praktickou část zkoušky z PDV (paralelní implementace jednoduchých úloh) bude proveden externě pomocí Google Forms. ​
 +
 +Link: [[https://​forms.gle/​cYQhXMz4A6vVvD1a9]]
 +
 +**Pro vyplnění formuláře je nutno se přihlásit.** Formulář můžete vyplnit jen jednou, svojí odpověď však můžete změnit a tedy se přehlásit na jiný termín. Přihlašování/​odhlašování na daný termín končí 48 hodin před začátkem daného termínu, kdy z aktuálně přihlášených uděláme platný seznam na danou zkoušku, pozdější změna nebude akceptována (při vyplnění formuláře je uchováván čas).
 +
 +Aktuální zaplněnost termínů lze vidět po odeslání formuláře kliknutím na „předchozí odpovědi“,​ nicméně formulář automaticky nezneplatňuje termíny po jejich naplnění, takže si toto musíte ohlídat sami. Dle dostupných místností je kapacita termínu typicky 44 (místnosti 307, 310, 311, 328) a tedy prvních 44 studentů (dle času odeslání) bude přihlášeno.
 +
 +Pokud si nejste jisti, jestli jste zapsáni (např. jste se přehlašovali a kapacita se zvýšila nad limit), napište e-mail na bosansky@fel.cvut.cz.
 +
 +Termíny:
 +  * 30.5.2019, 9:00
 +  * 7.6.2019, 9:00
 +  * 7.6.2019, 13:00
 +  * 27.6.2019, 9:00
 +
 +  * V termínech 10.6. - 26.6.2019 probíhají na katedře SZZ, možnost využití počítačových učeben na zkoušky je omezená (v případě nutnosti je možnost vypsání jednoho termínu s menší kapacitou v daném období)
 +
 +  * 1 termín bude v září 2019
 +
 +**Praktická zkouška bude trvat (maximálně) 3 hodiny.**
 +
 +=== 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 převážně z distribuované části, ale bude tam menší část i z paralelní části. ​