Warning
This page is located in archive. Go to the latest version of this course pages.

Harmonogram cvičení

Datum Téma cvičení
1. 6. 10. Čtvrtek Úvod - požadavky, bodové hodnocení, semestrální projekty.
Programování pomocí MMX a SSE instrukcí
2. 13. 10. Čtvrtek Vícevláknové programování pomocí pthreads.
Vlákna - řešení jednoduché úlohy.
Zadání domácí úlohy I - vlákna.
3. 20. 10. Čtvrtek CUDA - překlad programu, ladění, jednoduché příklady.
Výběr zadání samostatného semestrálního projektu.
4. 27. 10. Čtvrtek CUDA - řešení jednoduchých příkladů.
5. 3. 11. Čtvrtek CUDA - řešení jednoduché úlohy I (doplňování kódu do předpřipravené kostry aplikace).
Odevzdání domácí úlohy I.
Zadání domácí úlohy II - CUDA.
6. 10. 11. Čtvrtek CUDA - řešení jednoduché úlohy II (doplňování kódu do předpřipravené kostry aplikace).
7. 17. 11. Čtvrtek Státní svátek
8. 24. 11. Čtvrtek Samostatná práce na projektu - konzultace I.
Průběžná kontrola první části projektu.
Odevzdání domácí úlohy II.
Zadání domácí úlohy III - CUDA.
9. 1. 12. Čtvrtek OpenCL - překlad programu, řešení jednoduché úlohy.
10. 8. 12. Čtvrtek OpenCL - řešení jednoduché úlohy III (doplňování kódu do předpřipravené kostry aplikace).
11. 15. 12. Čtvrtek Samostatná práce na projektu - konzultace II.
Odevzdání domácí úlohy III.
12. 22. 12. Čtvrtek Samostatná práce na projektu - konzultace II.
13. 5. 1. Čtvrtek
Prezentace semestrálních projektů I.
14. 12. 11. Čtvrtek Zápočty.
Prezentace semestrálních projektů II.

Organizace cvičení

Účast na cvičeních je povinná. Cvičení jsou různého typu:

  • Výkladová cvičení (1. – 4. a 9. týden), kde se studenti prostřednictvím příkladů seznamují s problematikou, kterou budou řešit na následujících cvičeních a zejména v rámci semestrálního projektu.
  • Programovací cvičení. Po seznámení s problémem řeší studenti jednoduché úlohy na počítači. Za úspěšně vyřešené úlohy dostávají body (až 12 bodů za semestr).
  • Konzultační cvičení během kterých jsou studenti povinni konzultovat své projekty s cvičícím.
    • Blok Konzultace I (8.týden) - 1x povinné konzultování návrhu sekvečního řešení na CPU (využívající vláken a SSE instrukcí).
    • Blok Konzultace II (11. – 12.týden) - 1x povinné konzultování návrhu paralelního řešení (výběr částí pro paralelizaci, způsob paralelizace, návrh implementace v CUDA).
  • Kontrolní cvičení (8. a 13.týden), při nichž se odevzdávají a předvádí jednotlivé části projektu:
    • První kontrolní cvičení je v 8. týdnu, kdy studenti předvedou hotovou implementaci projektu na CPU.
    • Odevzdání finální verze projektu (implementace CPU i GPU) proběhne v 13. týdnu.
    • Nesplnění podmínek každé z kontrol má za následek zisk nižšího počtu bodů.
    • Podmínkou k zápočtu je splnění povinných požadavků.
  • Ve 13. týdnu a na zápočtovém cvičení v 14. týdnu všichni studenti prezentují své semestrální projekty (kratičká prezentace na 5-7 minut). Teprve po předvedení práce dostane student zápočet (splnil-li všechny požadavky).
  • Domácí úlohy. Během semestru jsou studentům zadány celkem 3 úlohy, které budou řešit samostaně doma. Za úspěšně vyřešené a včas odevzdané úlohy dostávají body (až 18 bodů za semestr).

Veškeré získané body se započítávají při výsledné klasifikaci.

Podrobné požadavky k vypracování projektu

Každý student/studentka dostane na třetím/čtvrtém cvičení přidělené téma projektu, na kterém bude po celý semestr pracovat samostatně. Studenti si mohou téma projektu navhrnout sami (podléhá schválení cvičícímu) nebo jim bude nějaké přiděleno cvičícím (seznam úloh). Každý projekt lze rozdělit zhruba do pěti částí (implementace na CPU, implementace na GPU, testování a měření, dokumentace, prezentace), podrobnější požadavky najdete v tabulce uvedené níže.

Úspěšné vypracování a včasné odevzdání projektu (včetně webové stránky, dokumentace a prezentace) je nutnou podmínkou pro získání zápočtu. Za semestrální projekt může cvičící přidělit až 70 bodů. Konkrétní požadavky a jejich bodové hodnocení najdete v níže uvedené tabulce. Předpokládá se, že studenti pracují na projektu průběžně během semestru. Projekt se odevzdává po částech, ve dvou kontrolních cvičeních. Za nedodržení termínů odevzdávání jednotlivých částí projektu bude student(ka) penalizován(a) −5 body za každý týden zpoždění.

Projekty pište v C/C++, CUDA a OpenGL. Dbejte na kulturu programování, dodržujte klasické konvence C/C++ (tj. rozumné členění programu; rozumně dlouhé procedury; komentáře ve stylu doxygen; vhodná volba jmen proměnných, funkcí a konstant; odsazování kódu; …). Pište konfigurovatelnou aplikaci (GUI nebo textový konfigurační soubor, který bude načítán při spuštění aplikace) a vstupní data načítejte z externích souborů.

Inspirujte se projekty, které najdete jinde na internetu, ale nekopírujte cizí kód! Když najdeme stejný kód, nedostanete zápočet a v extrémním případě skončíte před disciplinární komisí FEL (viz. akademická pravidla). Vyžadujeme, abyste vlastnímu kódu rozuměli a byli schopni na vyžádání provádět drobně změny.

Požadavky / hodnotící kriteria Body Povinný Týden kontroly
Projekt - implementace 40 bodů
Implementace na CPU s případným využitím vláken a SSE instrukcí. 8.
Paralelní implementace na GPU s využitím CUDA. 13.
Ověření korektnosti řešení. 13.
Kvalita implementace (CPU i GPU). 13.
Funkčnost implementovaného řešení. 13.
Vygenerovaná programátorská dokumentace. 13.
Testovací sady dat (alespoň 3 různé datové sady). 13.
Dokumentace / report 20 bodů 13.
Popis řešeného problému. 13.
Popis efektivního řesení problému na CPU (vlákna, SSE). 13.
Návrh a popis paralelního řesení problému na GPU. 13.
Popis implementačních detailů (CUDA). 13.
Návrh a popis provedeného testování. 13.
Výsledky měření vynesené do grafu a popsané v tabulkách. 13.
Zhodnocení výsledků a závěr. 13.
Vytvoření webové stránky (šablona stránky) 13.
Prezentace 10 bodů 14.
Příprava prezentace projektu (ppt nebo pdf). 14.
Ústní prezentace projektu. 14.
Další podmínkou k získání zápočtu je dodržení „rozumného“ stylu psaní programu, tzv. coding style. Nesplnění tohoto požadavku vede k vrácení úlohy!!!
Čitelnost zdrojových kódů (jednoduchost, členění kódu, vhodné pojmenování funkcí, atd.) 13.
Modularita (rozdělení na více hlavičkových a zdrojových souborů) 13.
Komentáře v angličtině ve stylu doxygen (hlavičky funkcí, parametry funkcí, globální proměnné, struktury, hlavičkové soubory, atd.) 13.

Vybavení počítačové učebny

Device GeForce GTX 750 Ti
CUDA Capability 5.0 (Maxwell)
Total amount of global memory 2048 MBytes (2147483648 bytes)
Multiprocessors 5
CUDA Cores per Multiprocessor 128
Total amount of CUDA Cores 640 CUDA Cores
GPU Clock rate 1255 MHz (1.25 GHz)
Memory Clock rate 2700 Mhz
Memory Bus Width 128-bit
L2 Cache Size 2097152 bytes
Total amount of constant memory 65536 bytes
Total amount of shared memory per block 49152 bytes
Total number of registers available per block 65536
Warp size 32
Maximum number of threads per multiprocessor 2048
Maximum number of threads per block 1024
Max dimension size of a thread block (x,y,z) (1024, 1024, 64)
Max dimension size of a grid size (x,y,z)(2147483647, 65535, 65535)
Concurrent copy and kernel execution Yes with 1 copy engine(s)
courses/b4m39gpu/cviceni/start.txt · Last modified: 2016/09/30 15:53 by cajthvac