Cvičení MI-PRC I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PRC, LS2010/11, Cv.1-6 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti
Laboratoře [MI-PRC Programování v CUDA] http://edux.fit.cvut.cz/courses/mi-prc/labs/start#laboratore of 1 310.2011 3:39 Indexmenu sort number: 7000 Laboratoře Týden Datum Téma Slajdy 1 Seznámení s prostředím, zadání semestrálních prací Zadání semestrálních prací 2 Odevzdání sekvenční implementace, 3 Kompilace CUDA kódu, zapojení CUDA knihoven 4 Práce s nástroji pro ladění kódu a profilační nástroje, 5 konzultace ke CUDA implementaci 6 odevzdaní CUDA implementace, zápočet Osnova laboratorních cvičení a důležité pokyny a odkazy Zadání Pokyny k implementaci Implementace sekvenčního algoritmu Implementace algoritmu pro grafickou kartu Kompilace a spouštění úloh v CUDA API na GPU serverech Debugery a profilery Výpočetní prostředky Požadovaný obsah technických zpráv Témata (nepovinných) odborných referátů /mnt/www/courses/mi-prc/data/pages/labs/start.txt Poslední úprava: 2011/10/30 20:41 autor: xsimecek
adání semestrálních prací [MI-PRC Programování v CUDA] of 4 310.2011 3:40 Zadání semestrálních prací Pravidla: Vybrané téma si tým rezervuje na prvním cvičení nebo mu bude přiděleno. Po domluvě s garantem je možno vypsat i vlastní téma studenta (i pro vícečlenný tým) Po domluvě je možno v zadání pokračovat v rámci BP/DP Pokud potřebujete použijte generátor grafu s příslušným typem grafu. Úlohy pro jednotlivce 4. 5. 6. 7. 8. 9. Hledání nejbližších bodů Maximální nezávislá množina Optimalizační problém baťohu Minimální hranový řez Obchodní cestující Izomorfismus grafů Vrcholové obarvení grafu In-place merge sort 3-SAT Úlohy pro dvojice 4. 5. 6. 7. Řadící algoritmy Operace s řídkými maticemi Řešení soustav lineárních rovnic Násobení matic Převod řídkých matic Hledání nejkratších cest v grafu Zobecněný hranový řez Úlohy pro jednotlivce Hledání nejbližších bodů Úkolem je paralelně najít minimální Euklidovskou vzdálenost všech bodů v množině n náhodně vygenerovaných bodů 2-rozměrné roviny v oblasti tvořené obdélníkem R={(x,y), 0 px[i] kx, 0 y ky}. Idea řešení: Obdélník R virtuálně rozdělíme na počet_vláken stejně širokých (nebo vysokých) pásů. Každé vlákno bude obsluhovat jeden pás. Nejprve si načte body patřící do jeho pásu. Pak provede hledání nejbližšího bodu v rámci svého pásu (lokální výpočet). Dále určí body, které mohou mít svého nejbližšího souseda v jiném (sousedním) pásu, protože jsou hranici pásu blíže než dosud nalezené řešení. Tyto body jsou zapsány do sdílených polí sousedních vláken. Vlákna na základě informací od sousedních vláken dokončí výpočet (globální) a zapíše svou část řešení do pole výsledků. Úkol: experimenty s více pásy pro jedno vlákno, místo pásu čtvercovou oblast apod.
Zadání semestrálních prací [MI-PRC Programování v CUDA] 2 of 4 310.2011 3:40 Maximální nezávislá množina Viz http://cs.wikipedia.org/wiki/nez%c3%a1visl%c3%a1_mno%c5%beina [http://cs.wikipedia.org /wiki/nez%c3%a1visl%c3%a1_mno%c5%beina] Optimalizační problém baťohu http://cs.wikipedia.org/wiki/probl%c3%a9m_batohu [http://cs.wikipedia.org/wiki/probl %C3%A9m_batohu] Minimální hranový řez Nalezněte minimální hranový řez grafu, tj. nalezněte rozdělení množiny uzlů V do dvou disjunktních neprázdných podmnožin X a Y tak, že součet ohodnocení všech hran {u,v} takových, že u je z X a v je z Y, je minimální. Obchodní cestující Úkolem je konstrukce Hamiltonovské cesty (tj. cesty procházející všemi body a každým právě jednou) V Euklidovském grafu s minimální geometrickou délkou. Izomorfismus grafů http://cs.wikipedia.org/wiki/izomorfismus [http://cs.wikipedia.org/wiki/izomorfismus] Vrcholové obarvení grafu http://cs.wikipedia.org/wiki/barven%c3%ad_grafu [http://cs.wikipedia.org/wiki/barven%c3%ad_grafu] In-place merge sort Řazení celočíslených polí pomocí této metody: http://thomas.baudel.name/visualisation/visutri/inplacestablesort.html [http://thomas.baudel.name /Visualisation/VisuTri/inplacestablesort.html] http://stackoverflow.com/questions/2571049/how-to-sort-in-place-using-the-merge-sort-algorithm [http://stackoverflow.com/questions/2571049/how-to-sort-in-place-using-the-merge-sort-algorithm] 3-SAT
Zadání semestrálních prací [MI-PRC Programování v CUDA] 3 of 4 310.2011 3:40 Implementujte problém 3-SAT, viz http://en.wikipedia.org/wiki/boolean_satisfiability_problem [http://en.wikipedia.org /wiki/boolean_satisfiability_problem] Úlohy pro dvojice Řadící algoritmy Řazení celočíslených polí pomocí těchto metod: triviální: (Bubble, Selection, Insertionsort, chytřejší: Merge, Quick, Heap Speciální: Radix, Shell Úkol: Změřit různé kombinace metod, s různou distribucí počátečních dat Operace s řídkými maticemi Implementujte operace násobení řídké matice vektorem a násobení dvou řídkých matic v formátech vhodných pro uložení řídkých matic(minimálně CSR) viz http://en.wikipedia.org/wiki/sparse_matrix [http://en.wikipedia.org/wiki/sparse_matrix] Úkol: Změřit pro různě řídké vstupní matice Řešení soustav lineárních rovnic Implementujte minimálně tyto metody řešení soustav lineárních rovnic: Gaussova eliminace LU rozklad viz http://en.wikipedia.org/wiki/lu_decomposition [http://en.wikipedia.org /wiki/lu_decomposition] Choleskyho metoda viz http://en.wikipedia.org/wiki/cholesky_decomposition [http://en.wikipedia.org/wiki/cholesky_decomposition] Úkol: Porovnat verze optimalizované pomocí loop-blocking a recursivně Násobení matic Implementujte minimálně tyto metody násobení matic: klasický Strassenův algoritmus http://en.wikipedia.org/wiki/strassen_algorithm [http://en.wikipedia.org /wiki/strassen_algorithm] Úkol: Porovnat verze klasického násobení optimalizované pomocí loop-blocking a recursivně se Strassenův algoritmus Převod řídkých matic
adání semestrálních prací [MI-PRC Programování v CUDA] of 4 310.2011 3:40 Seznamte se s myšlenkami převodu řídkých matic na jiné formáty v: http://shimi.webzdarma.cz/vyzkum/ppam05/ppam05.html [http://shimi.webzdarma.cz/vyzkum/ppam05 /ppam05.html] http://shimi.webzdarma.cz/vyzkum/ppam07/ppam07.html [http://shimi.webzdarma.cz/vyzkum/ppam07 /ppam07.html] Úkol: Implementujte algoritmus, který efektivně převádí řídké matice do požadovaného formátu Hledání nejkratších cest v grafu Implementujte minimálně tyto algoritmy hledání nejkratších cest v grafu: Dijkstra Floydův-Warshallův algoritmus http://en.wikipedia.org/wiki/dijkstra%27s_algorithm [http://en.wikipedia.org/wiki/dijkstra%27s_algorithm] Úkol: Implementujte tyto algoritmy, aby byly efektivní i pro řídké grafy Zobecněný hranový řez Nalezněte zobecněný hranový řez grafu, tj. nalezněte rozdělení množiny uzlů V do n disjunktních neprázdných podmnožin X_i tak, že součet ohodnocení všech hran {u,v} takových, že u je z X_i a v je z X_j, je minimální a dále velikosti podmnožin X_i jsou shodné nebo podobné. /mnt/www/courses/mi-prc/data/pages/zadani.txt Poslední úprava: 2011/10/30 20:16 autor: xsimecek
áplň laboratorních cvičení [MI-PRC Programování v CUDA] http://edux.fit.cvut.cz/courses/mi-prc/osnova 1 of 1 310.2011 3:40 Náplň laboratorních cvičení Cílem laboratorních cvičení je naučit studenty pracovat s technologiemi pro efektivní a paralelní implementaci problému na grafických kartách. Tým složený z několika studentů bude mít za úkol: (nepovinně) vypracovat odborný referát realizovat semestrální úlohu, spočívající v návrhu, implementaci a analýze paralelního algoritmu pro řešení zadaného problému na grafické kartě. Algoritmus bude implementován v C/C++ v CUDA API. Své téma si tým vybere z nabídky připravené pro daný semestr. Úlohy jsou rozlišeny podle obtížnosti a podle toho jsou určeny velikosti týmů. V rámci jednoho cvičení je každé téma zadáno nejvýše jednomu týmu. Tým studentů má možnost před nebo během prvního cvičení navrhnout cvičícímu vlastní téma úlohy. Cvičící pak po konzultaci s garantem předmětu úlohu může upravit, doplnit, schválit nebo neakceptovat. Realizace jednoho algoritmu bude rozdělena do následujících etap: 4. Návrh a implementace sekvenčního (neoptimalizovaného) algoritmu. Návrh a implementace paralelního algoritmu. Měření časové složitosti paralelního programu. Vypracování zprávy. Jednotlivé etapy řešení budou v závěrečné zprávě zkontrolovány a obodovány. * Etika práce na semestrální úloze * Cílem laboratorních cvičení je naučit studenty na vlastním projektu dovednostem efektivního a paralelního programování Proto je v souladu se Studijním a zkušebním řádem ČVUT nezbytností, aby každý tým studentů pracovala na semestrální úloze samostatně. Dělba práce uvnitř týmu je její zodpovědností, ale každý člen týmu by měl vědět o důležitých rysech řešení. Případné problémy či nejasnosti řeší konzultací s cvičícím v rámci rozvrhovaných hodin na cvičení, případně formou individuálních konzultací v rámci konzultačních hodin cvičícího. Pokud se prokáže, že tým studentů neřešil semestrální úlohu samostatně a předložil jiné než vlastní řešení (zdrojové programy, naměřené výsledky, výslednou zprávu), potom daný tým: bude mít adekvátní (či všechny) body anulovány, nebude připuštěn k písemné zkoušce, po dohodě s přednášejícím budou buď moci příští rok předmět MI-PRC absolvovat znova od nuly nebo bude jejich jednání postoupeno jako přestupek disciplinární komisi FIT. /mnt/www/courses/mi-prc/data/pages/osnova.txt Poslední úprava: 2011/10/30 20:28 autor: xsimecek