====== Obecné výpočty na grafických procesorech ====== | {{:all:members:fullsize:sloup-right.jpg?nolink&100|Ing. Jaroslav Sloup }} ^ Vyučující | [[:cs:members:sloup|Ing. Jaroslav Sloup ]] | __ ^ Rozvrhy | [[https://www.feld.cvut.cz/education/rozvrhy-ng/public/cz/predmety/15/76/p1576606.html|A4M39GPU]] | | ::: ^ Zakončení | KZ | ::: ^ Web | [[http://service.felk.cvut.cz/courses/A4M39GPU/|A4M39GPU]] | | ::: ^ Kredity | 4 | ::: ^ Rozsah výuky | 1 + 2 | | ::: ^ Semestr | Z | ::: ^ Typ předmětu | [[http://www.feld.cvut.cz/education/bk/role.html#V|V]] | {{gallery>all:study:courses:gpu?*pic*&crop }} ====== Anotace ====== Cílem předmětu je seznámení studentů se základními principy obecných výpočtů na grafických procesorech (GPGPU) a získání praktických zkušeností s návrhem a implementací aplikací využívajících pro urychlení výpočtů GPU. Výklad zahrnuje seznámení s architekturou současných grafických procesorů a jejími omezeními, základní koncepty paralelního programovaní GPU, jakyky pro programování GPU, technologii CUDA a metody optimalizace kódu. Cvičení jsou zaměřena na řešení typových úloh a semestrálních projektů. Důraz je kladen na získání praktických zkušeností s konkrétní technologií - CUDA. {{gallery>all:study:courses:gpu?*slide* }} ====== Osnovy přednášek ====== 1. Úvod do počítání na GPU (architektury, jazyky, GPU versus CPU). \\ 2. Vicevláknové programování. \\ 3. Popis architektury nVidia CUDA a základy jejího programování (Compute Unified Device Architecture). \\ 4. Práce s vlákny a přístup do paměti (CUDA). \\ 5. Metody optimalizace kódu (CUDA). \\ 6. Ukázky návrhu a implementace aplikací v prostředí CUDA. \\ 7. Ostatní jazyky pro GPGPU I - OpenCL (Open Computing Language). \\ 8. Ostatní jazyky pro GPGPU II - GLSL (OpenGL Shading Language). \\ ====== Osnovy cvičení ====== 1. Úvod - požadavky, bodové hodnocení. Programování pomoci SSE instrukcí. \\ 2. Ukázky konkrétních příkladů vicevláknových aplikací. \\ 3. CUDA - překlad programu, ladění, jednoduché příklady. Zadání projektu. \\ 4. CUDA - řešení jednoduché úlohy I (doplňování kódu do předpřipravené kostry aplikace). \\ 5. CUDA - řešení jednoduché úlohy II (doplňování kódu do předpřipravené kostry aplikace). \\ 6. Samostatná práce na projektu - konzultace I. \\ 7. Samostatná práce na projektu - konzultace I. \\ 8. Průběžná kontrola první části projektu. \\ 9. OpenCL - překlad programu, ladění, jednoduché příklady. \\ 10. OpenCL - řešení jednoduché úlohy (doplňování kódu do předpřipravené kostry aplikace). \\ 11. Samostatná práce na projektu - konzultace II. \\ 12. Samostatná práce na projektu - konzultace II. \\ 13. Odezvdáváni projektu + dokumentace. \\ 14. Zápočty. \\ ====== Literatura ====== 1. David B. Kirk, Wen-mei W. Hwu: Programming Massively Parallel Processors: A Hands-on Approach. Morgan Kaufmann, 1st edition, 2010, ISBN-13: 978-0123814722. \\ 2. Jason Sanders, Edward Kandrot: CUDA by Example: An Introduction to General-Purpose GPU Programming. Addison-Wesley Professional, 1st edition, 2010, ISBN-13: 978-0131387683. \\ 3. Ryoji Tsuchiyama, Takashi Nakamura, Takuro Iizuka, Akihiro Asahara, Satoshi Miki: The OpenCL Programming Book. Fixstars Corporation, 2010. \\