Do not adjust to the system. Adjust the system!
Architektury počítačů a paralelních systémů (APPS)
Verze Covid Online, letní semestr 2020/21
-
Zkouška
-
Odkazy, informace, požadavky
-
Cvičení
-
Přednášky
Zkouška
Požadavky pro zkoušku
Vedení fakulty nechce testovat studenty a zkouška tak proběhne ústní formou online.
Nepodceňujte přípravu na zkoušku. Poslední týden června už nemusí být dostatek místa na zkouškách pro opravné termíny.
Přidělení místa na zkoušce losem by se určitě mnohým nelíbilo, stejně jako způsob: "kdo dřív přijde, ten dřív mele".
Způsob přípravy na zkoušku: "já to nějak okecám" není dobrý nápad. Pokud se někdo bude opakovaně vymlouvat, že si ze cvičení nic nepamatuje,
nebo že "to vždycky jen kopíroval", tak není nic jednoduššího, než zrušit zápočet a cvičení si za rok zopakovat. Na dlouhé přemýšlení u zkoušky
není časový prostor, takže opakované výmluvy "nevím jak to říci", nedovolí zvládnout zkoušku v časovém termínu 45 minut.
O dobré přípravě na zkoušku také nesvědčí podesáté zopakované "nevím", případně "nevím, na co jsem tázán".
- Na zkoušku se studenti přihlašují prostřednictvím e-mailu, termíny jsou vypsány v IS Edison.
- Ke zkoušce budou přihlašování jen studenti s platným zápočtem.
- Pro online spojení během zkoušky bude použit meet,
pro připojení k meet-u využijí studenti školní google účet,
během zkoušky budou studenti mít zapnutou kameru a tuto budou mít umístěnu před sebou nad monitorem
a aktivují si i sdílení desktopu. Odkaz na meet bude k dispozici před zkouškou,
- v IS Edison budou mít studenti po dobu zkoušky povoleno zobrazení své fotografie,
- během zkoušky nebudou studenti používat sluchátka a budou v místnosti sami,
- pokud budou studenti během zkoušky vyzváni, aby něco napsali či nakreslili,
bude k tomu účelu využit program "draw io" a bude použit sdílený dokument uložený na gdrive.
Pro testovací účely byl vytvořen
APPS-test.
Studenti si ověří dostupnost dokumentu jeho otevřením.
Vyzkouší si vykreslení primitivního obrázku z obdélníků, koleček a čar.
Vyzkouší si také kreslení rukou (nahoře pod ikonou +).
Odkaz na dokument pro zkoušku bude k dispozici společně s odkazem na meet před zkouškou.
- Pokud se ukáže kvalita spojení přes meet jako nedostatečná a nebude možno si rozumět,
bude při první zkoušce výsledek anulován.
Při dalších termínech už ale bude v takovýchto případech zkouška hodnocena jako "nevyhověl".
- Pořadí zkoušení bude určeno programem "losovani" a program bude spuštěn na serveru linedu.vsb.cz v adresáři /tmp,
kde je uložen i se zdrojovým kódem.
- Pro komunikaci během zkoušky bude sloužit v Matrixu místnost "APPS-Exam".
Do místnosti vstoupí zkoušení studenti ráno před zkouškou a po zkoušce místnost opustí.
Témata ke zkoušce jsou dána osnovu předmětu v IS Edison,
podrobnější
osnova
i se studijními materiály je k dispozici na stránkách předmětu.
Osnova obsahuje 10 základních tématických okruhů, jak teoretických, tak i praktických.
Ke každému okruhu by měli být student schopni samostatně věcně hovořit cca 15 minut.
Zkouška však nemůže trvat 150 minut, takže ke každému tématu bude položena upřesňující otázka.
Maximální délka zkoušení bude 45 minut.
Pár poznámek pod čarou, tzv. dobře míněných rad.
- Při přípravě na zkoušku je potřeba se soustředit na porozumění principům, proč a jak věci fungují.
Nestačí jen znát, z čeho se co skládá.
- Vyzkoušejte si sami pro sebe, zda např. dokážete vysvětlit, proč svítí žárovka?
Určitě to není tím, že se vložilo wolframové vlákno do vakua.
Stejně tak se princip fungování počítače nedá vysvětlit jen tím, že se spojí procesor, paměti a periférie sběrnicí.
- Další příklad, na kterém si můžete sami pro sebe vyzkoušet vysvětlení principu fungování, je např. varná konvice.
Zde je důležité si uvědomit, že: "naliji vodu, zapnu a počkám až vypne", není princip fungování, ale způsob používání.
- V neposlední řadě je potřeba si uvědomit, že u zkoušky vysvětluje student problematiku zkoušejícímu.
Zkouška není konzultace.
Důležité odkazy, informace a požadavky
-
Informace k organizaci předmětu APPS pro online výuku
Covid online
- Studijní
materiály.
- Úkoly budou zadávány a řešení úkolů budou odevzdávána do systému
Kelvin.
- Pro vzájemnou komunikaci je možno kromě e-mailu (využívejte přednostně školní e-mail) používat
Matrix.
Zde je možno se spojit i dalšími vyučujícími tohoto předmětu.
Mohou si vytvořit i vlastní místnost a budou Vás o tom informovat.
- Image připraveného virtuální počítače s OS Ubuntu 20.04 pro VirtualBox naleznete na GDrive.
Verze s ovladačem VBoxSVGA.
Když nebude první verze fungovat, můžete zkusit verzi s VMSVGA.
Image importujte do VirtualBoxu přes menu File. Uživatel i heslo je apps.
Pokud budete mít vlastní verzi OS Linux, budete si muset případné odlišnosti, instalace,
konfigurace a problémy řešit sami.
Seznam balíčků, které bude potřeba doinstalovat:
- sudo apt install gcc g++ nasm make cmake git
- Kdo chce Eclipse-C++:
Packages
- Java pro Eclipse: sudo apt install openjdk-14-jdk
- A později pro CUDU: sudo apt install libopencv-dev nvidia-nsight nvidia-cuda-toolkit
- Pro práci je možno a později i bude nutno (cca od 4.-5. týdne semestru) využívat školní počítače.
Pro přístup do školy bude potřeba mít aktivní
VPN
připojení.
Pokud se Vám stránka zobrazí anglicky, přepněte si vpravo nahoře češtinu.
Počítače, na které se můžete hlásit do školy a pracovat na nich vzdáleně:
- linedu.vsb.cz
- pcfeib430-022-187.vsb.cz
- .... až ....
- pcfeib430-022-202.vsb.cz
Později pro práci s GPU budou přidány ještě další.
Není-li ve virtuálním počítači funkční DNS, změňte si nastavení VPN na vsb_localinet, viz:
další možnosti nastaveni.
- Pro vzdálené přihlašování dozajista snazší práci zajistí přihlašování bez hesla pomocí vygenerované
dvojice privátního a veřejného klíče.
Krátký návod využívající pouze dva příkazy najdete např. v
dokumentaci ssh.
Na internetu je i řadu dalších návodů, ale mnoho z nich nabízí složitější řešení plynoucí
z neznalosti příkazů ssh.
- Aktivujte si školní Google účet, pokud už ho aktivovaný nemáte.
Počáteční heslo školního Google účtu naleznete na http://uzivatel.vsb.cz,
kde po přihlášení v záložce Uživatelský účet je stránka LDAP účet a mezi informacemi
... G Suite.
- Odkaz na
Meet pro online komunikaci,
např. pro konzultace, dotazy i během cvičení.
Připojení proběhne automaticky, když budete přihlášení školním účtem.
Cizí účty budou zamítány.
- Pro online připojení přes Meet nebo jiné platformy mějte prosím kameru a v Edisonu povolené zobrazení fotografie.
Kamera bude samozřejmě potřeba jen krátce.
Pokud se připojujete pro dotazy a konzultaci, bude potřeba hlavně sdílení desktopu.
Cvičení
- Online cvičení budou probíhat v čase přednášky, t.j. v úterý od 10:45 do 13:00.
Na vypracování úkolů tak budou mít všichni o 45 minut více času.
Přednášky jsou a další budou připraveny jako videa, viz dále.
-
Všechna témata cvičení budou v OS Linux.
Kdo nemá instalován OS Linux na svém počítači, může využít připravený virtuální počítač, viz výše.
Nebo je možno pracovat vzdáleně na počítačích v učebně, viz seznam počítačů výše.
- Předběžný plán online cvičení bude složen ze třech bloků:
- Assembler, 5 cvičení, 18 bodů, minimum 9 bodů.
- Programování s vlákny, 3 cvičení, 9 bodů, minimum 5.
- CUDA, 5 cvičení, 18 bodů, minimum 9 bodů.
Bude-li povolena laboratorní výuka, bude program upraven.
- Úkoly budou zadány v systému Kelvin, viz výše, a výsledky se do tohoto systému budou i odevzdávat.
- Opravy cvičení budou možné vždy 2 týdny po skončení tématu a budou online.
Neopravuje se konkrétní cvičení, každý si odpracuje tolik práce, kolik bodů mu chybí a témata budou za celý blok.
- Snažte se v daném bloku získat co nejvíce bodů hned od začátku, složitost témat bude postupně narůstat.
- Mějte na paměti, že předmět za 6 kreditů odpovídá dle ECTS požadavku na 180 hodin (1 hodina je 60 minut)
práce.
Během semestru to odpovídá požadavku cca 6 hodin na jedno cvičení.
Očekává se tedy odpovídající příprava na cvičení.
- Případy opisování, odevzdávání cizích programů, či jiné podvádění,
bude klasifikováno jako vážné porušení studijního řádu s odpovídajícími důsledky.
Program cvičení
Úkolem prvního cvičení je ověření, zda má každý připravené a vyzkoušené funkční vývojové prostředí,
a to ať už vlastní OS Linux, virtuální počítač, nebo vzdálená práce na počítači ve škole.
Každý si volí, co mu vyhovuje.
Dále je cílem ověření, že každý našel v Kelvinovi zadání úkolu a úkol naprogramuje a odevzdá.
Úkoly budou jednoduché, založené primárně na programování v C.
Problémy je potřeba hlásit a budou obratem řešeny.
Druhé cvičení bude zaměřeno na práci s globálními proměnnými a registry,
adresování krátkých řetězců a polí, správné využívání datových typů a registrů.
Cílem třetího cvičení je využívání bitových instrukcí: AND (TEST), OR, XOR, NOT, SHR (SAR), SHL.
Aritmetických instrukcí ADD, SUB (CMP), INC, DEC, NEG.
Podmíněné skoky Jxx - JE, JZ, JA, JB, JAE, JBE, JL, JG, JLE, JGE.
Úkoly mohou být zaměřeny na nalezení minimální a maximálního prvku v poli,
nejmenšího kladného či největšího záporného čísla, či hledání pozice takovýchto prvků,
Aritmetický průměr, pokud je délka pole mocnina dvou.
V řetězci převod na velká či malá písmena, nahrazení číslic znakem,
spočítání pravých a levých závorek,
převod čísla na řetězec ve dvojkové či šestnáctkové soustavě.
Čtvrté cvičení bude navazovat tématicky na předchozí,
jen nebudou dále používány globální proměnné, ale funkce budou volány s parametry
a návratovou hodnotou.
Příklady zůstávají stejné jako v předchozím týdnu: cykly, pole, podmínky, bitové a aritmetické operace.
Páté cvičení rozšíří programování z předchozích týdnů o instrukce násobení a dělení a instrukci podmíněného přesunu CMOVxx.
Ve funkcích se už také začne používat i smyčka ve smyčce.
Šestým cvičením se uzavře kapitola programování v ASM.
Úkoly budou rozšiřovat předchozí cvičení o využívání lokálních proměnných a instrukci CMOVxx.
Další tři cvičení budou zaměřena na programování ve vláknech.
Sedmé cvičení je příprava potřebných funkcí, jejich testování.
Budete mít za úkol připravit si třídící algoritmy:
přímý výběr (selection sort), přímé vkládání (insertion sort) a bublinkové třídění (bubble sort).
Algoritmy si připravíte tak, aby jimi bylo možno setřídit pouze zadanou část pole,
pro libovolný datový typ (int, long, float, double) a pro třídění sestupně i vzestupně.
Dále budete potřebovat funkci pro spojení setříděných polí.
Musíte si upravit tak, abyste s její pomocí dokázali spojit dvě setříděné části jednoho pole
do pole dalšího.
Popis algoritmu pro spojování setříděných polí (merge sorted arrays) je známý,
viz např.
video.
Nezaměňujte algoritmus Merge of sorted arrays s třídím algoritmem Merge sort!.
Algoritmy je potřeba řádně otestovat a to nejprve bez vláken a pak s vlákny.
Při testování není zapotřebí za každou cenu hned paralelní třídění.
Důležité je testování a kontrola výsledků po částech, pro snadnější nalezení chyby.
Testy svých programů již provedete na počítači ve škole.
Každému je přidělen jeden počítač, viz zadání úkolů v Kelvinu.
Osmé cvičení bude zaměřeno na využití připravených třídících funkcí.
Dle zadání svého cvičícího budete měřit časy třídění pro různý počet vláken.
Testovat třídění setříděného pole a třídění setříděného pole do opačného pořadí a pod.
Deváté cvičení: opět využití vláken, tentokrát pro vykreslování fontu do obrázku.
Bude potřeba se připravit na vykreslení libovolného fontu ze sady, která je součástí příkladu apps-lcd-opencv-simul.
Vykreslovat se bude celý řetězec a to buď horizontálně či vertikálně.
Vykreslovat se může na náhodnou pozici i v náhodných barvách.
Měřit se se bude čas, za jak dlouho se vykreslí zadaný počet řetězců v jednom a pak ve více vláknech.
Nebo kolik se vykreslí řetězců za zadaný čas. A pod.
- CUDA: Jednoduché manipulace s daty.
-
Přenos pole mezi GPU/CPU a jednoduché algoritmy, např. součet dvou vektorů.
-
Rozšíření struktury CudaImg (cuda_img.h) o metodu type at( int y, int x )
pro snadnější přístup k prvkům pole pomocí dvou indexů, podobně jako u cv::Mat. Možné také vytvoření operátoru [].
-
Načtení obrázku a jednoduchá úprava, např, odstranění požadované barvy, prohození barev a pod.
Využití metody at().
- CUDA: Manipulace s obrázky, výstupem bude nový obrázek:
- zvětšení či zmenšení obrázku,
- rotace obrázku,
- vložení či výřez z obrázku.
- CUDA: Manipulace s obrázky, použití alfa kanálu a vykreslení fontu:
- vložení obrázku s alfa kanálem do dalšího obrázku,
- vypsání textu do obrázku zadaným fontem, vložení textu do obrázku s alfa kanálem.
- CUDA: Manipulace s obrázky, opakování jednoduché operace z předchozích cvičení
pro vytvoření jednoduché animace/sekvence snímků.
- CUDA: Pokračování v předchozích tématech. Antialiasing?
Přednášky
Osnova předmětu je uvedena v IS Edison a podrobněji i na stránkách předmětu.
Pro teoretickou část předmětu jsou k dispozici přehledné studijní materiály a nebudou k těmto studijním
textům přidány další audio či video nahrávky.
Jde zejména o témata: procesory, mikropočítače, paměti a displeje.
Obsahem následujích videopřednášek jsou zejména témata praktická, která je nutno zvládnou během
semestru pro získání zápočtu.
Kromě praktických ukázek obsahují i teoretické části nutné pro zvládnutí dané problematiky.
Videopřednášky mají svou formou nahradit praktickou výuku v laboratořích, kdy je možno se studenty přímo komunikovat, radit,
upozorňovat je na chyby a zodpovídat rychlé dotazy.
Při online výuce musí studenti pracovat mnohem samostatněji.
Přednášky k praktické části předmětu jsou částečně připraveny ve formě videí a některé chybějící budou postupně doplněny.
- Pár slov
úvodem pro letní semestr 2020/21.
- Přednáška:
-
Způsoby práce
-
Popis registrů, adresování a spojování C a Assembleru
-
Praktické ukázky
- Přednáška:
-
Paměťové přesuny v C a ladění aplikace
-
Bitové a aritmetické operace
-
Podmíněné skoky
- Přednáška:
-
Volání funkcí - úvod
-
Příklady volání funkcí s parametry a návratovými hodnotami
- Přednáška: násobení, dělení
-
Instrukce násobení a dělení
- Přednáška: volání funkcí, práce s lokálními proměnnými.
-
Podmíněný přesun CMOVcc, zásobník a volání funkce
- Přednáška pro první dva týdny cvičení zaměřených na programování ve vláknech:
APPS-Vlákna-Pr-0b0000.
- Přednáška: vlákna, opět malý oslí můstek mezi tématy.
Vlákna budou využita pro vykreslování maticového/rastrového fontu pomocí knihovny OpenCV -
APPS-Vlákna-Pr-0b0001.
- Přednáška CUDA
Úvodní videopřednáška pro první dva týdny cvičení:
APPS-CUDA-Pr-0b0000.
- Přednáška CUDA
Přednáška pro třetí a čtvrtý týden cvičení:
APPS-CUDA-Pr-0b000.
- Teorie:
Arcitektura počítače.
Design by poli 2021