SVEUČILIŠTE U RIJECI
ODJEL ZA INFORMATIKU
Ulica Radmile Matejčić 2, Rijeka
Akademska godina 2019./2020.
PARALELNO PROGRAMIRANJE NA HETEROGENIM SUSTAVIMA
Studij: Preddiplomski studij informatike
Godina i semestar: 3. godina, 5. semestar
Web stranice predmeta: lab.miletic.net/hr/nastava/kolegiji/PPHS/ moodle.srce.hr/2019-2020/
ECTS bodovi: 5
Nastavno opterećenje: 2 + 2
Nositelj predmeta:
izv. prof. dr. sc. Božidar Kovačić
E-mail: bkovacic@inf.uniri.hr
Web stranica: portal.uniri.hr/Portfelj/1506
Ured: Ulica Radmile Matejčić 2, O-414
Vrijeme konzultacija: utorkom od 10 do 12 sati ili po dogovoru e-mailom
Asistent:
v. pred. dr. sc. Vedran Miletić
E-mail: vmiletic@inf.uniri.hr
Web stranica: vedran.miletic.net
Ured: Ulica Radmile Matejčić 2, O-520
Vrijeme konzultacija: utorkom od 12 do 14 sati ili po dogovoru e-mailom
Razvijanje općih i specifičnih kompetencija (znanja i vještina)
- usvajanje temeljnih znanja o načinu rada grafičkog procesora kod izvođenja računskih operacija opće namjene
- usvajanje tehnika paralelnog programiranja na heterogenim sustavima, što se intenzivno primjenjuje kod proračuna u prirodnim i tehničkim znanostima, obradi slika u medicini, baratanju digitalnim multimedijskim sadržajem i drugdje
Korespodentnost i korelativnost programa
Preduvjet za upis predmeta Paralelno programiranje na heterogenim sustavima je položen ispit iz predmeta Operacijski sustavi 2.
Pored navedenog, ovaj predmet tematski i problemski nasljeđuje i predmet Algoritmi i strukture podataka, a pojedinim temama prethodi predmetu Računalna grafika. Predmet je povezan i s predmetom Numerička matematika.
Okvirni sadržaj predmeta
Osnovne ideje višejezgrenosti, paralelnog programiranja i primjeri primjene. Programski jezici za paralelno programiranje na heterogenim sustavima. Osnovne programske strukture, tipovi podataka, operatori i funkcije.
Hardverska arhitektura heterogenih sustava. Platforme, uređaji i konteksti. Prijenos podataka između memorije različitih uređaja. Događaji, obavijesti i sinkronizacija. Analiza peformansi koda i otklanjanje grešaka u kodu.
Modeli konkuretnosti i izvođenja programskih naredbi. Obrada slika. Implementacija programskog jezika za paralelno programiranje na osnovnim i grafičkim procesorima.
Studijski slučajevi stvarnih algoritama: redukcija i sortiranje, algoritmi na matricama, obrada slika, konvolucija, obrada videa, histogram, simulacija višečestičnih sustava, generiranje slučajnih brojeva, kriptoalgoritmi.
Implementiranje vlastitih algoritama. Ekstenzije programskih jezika za paralelno programiranje. Mogućnosti primjene heterogenog računanja na webu. Mogućnosti primjene u ubrzanju prikaza računalne grafike.
Oblici provođenja nastave i način provjere znanja
Predavanja, vježbe, samostalni zadaci, konzultacije.
Popis literature potrebne za studij i polaganje ispita
- Hwu, W. Heterogeneous system architecture: a new compute platform infrastructure. (Elsevier, 2015).
- Kirk, D. B. & Hwu, W. W. Programming Massively Parallel Processors: A Hands-on Approach. (Elsevier, 2016).
- ROCm documentation. (AMD, 2019). Dostupno na: rocm.docs.amd.com
- CUDA C Programming Guide. (NVIDIA, 2019). Dostupno na: docs.nvidia.com/cuda/cuda-c-programming-guide/
- Skripte, prezentacije i ostali materijali za učenje dostupni u e-kolegiju.
Popis literature koja se preporučuje kao dopunska
- Kaeli, D. R., Mistry, P., Schaa, D. & Zhang, D. P. Heterogeneous Computing with OpenCL 2.0. (Elsevier/Morgan Kaufmann, 2015).
- OpenCL Overview. (Khronos Group, 2017). Dostupno na: www.khronos.org/opencl/
- Advanced Micro Devices. "RDNA 1.0" Instruction Set Architecture, Reference Guide. (AMD Developer Central, 2019). Dostupno na: gpuopen.com/wp-content/uploads/2019/08/RDNA_Shader_ISA_7July2019.pdf
- Advanced Micro Devices. "Vega" Instruction Set Architecture, Reference Guide. (AMD Developer Central, 2017). Dostupno na: developer.amd.com/wordpress/media/2017/08/Vega_Shader_ISA_28July2017.pdf
- Advanced Micro Devices. OpenCL Programming Guide, Revision 2.7. (AMD Developer Central, 2013). Dostupno na: developer.amd.com/wordpress/media/2013/07/AMD_Accelerated_Parallel_Processing_OpenCL_Programming_Guide-rev-2.7.pdf
- Advanced Micro Devices. OpenCL Optimization Guide. (AMD Developer Central, 2015). Dostupno na: developer.amd.com/wordpress/media/2013/12/AMD_OpenCL_Programming_Optimization_Guide2.pdf
- Advanced Micro Devices. OpenCL User Guide. (AMD Developer Central, 2015). Dostupno na: developer.amd.com/wordpress/media/2013/12/AMD_OpenCL_Programming_User_Guide2.pdf
- LLVM documentation. Dostupno na: llvm.org/docs/
Način praćenja kvalitete i uspješnosti izvedbe predmeta
Kroz ustrojeni sustav osiguranja kvalitete Odjela za informatiku.
Mogućnost izvođenja na stranom jeziku
Ima (engleski).
R. BR. | OČEKIVANI ISHODI |
---|---|
1. | objasniti vezu višejezgrenosti i paralelnog programiranja |
2. | navesti primjere paralelnih algoritama i često korištenih programskih struktura |
3. | objasniti pojam heterogenog sustava |
4. | opisati hardversku arhitekturu heterogenih sustava i njezinu softversku reprezentaciju |
5. | navesti razlike u načinu rada osnovnih i grafičkih procesora |
6. | objasniti pojam paralelizabilnosti algoritma i prepoznati to svojstvo kod konkretnih algoritama |
7. | implementirati jednostavnije paralelne algoritme i strukture podataka |
8. | primijeniti stečena znanja kod implementacije paralelnih algoritama za rješavanje stvarnih problema |
AKTIVNOSTI I OCJENJIVANJE STUDENATA
VRSTA AKTIVNOSTI | ECTS | ISHODI UČENJA | SPECIFIČNA AKTIVNOST | METODA PROCJENJIVANJA | BODOVI MAX. |
---|---|---|---|---|---|
Pohađanje nastave | 1 | 1--8 | Prisutnost studenata | Popisivanje (evidencija) | 0 |
Pisani ispit | 1 | 1--6 | Dva kolokvija | 0--20 bodova za svaki kolokvij, ovisno o stupnju točnosti i potpunosti | 40 |
Kontinuirana provjera znanja | 1 | 7--8 | Dvije kontrolne zadaće | 0--15 bodova za svaku kontrolnu zadaću, ovisno o stupnju točnosti i potpunosti | 30 |
Projekt | 2 | 7--8 | Dizajn, implementacija i prezentacija paralelnog algoritma | 30 bodova prema definiranim kriterijima | 30 |
UKUPNO | 5 | 100 |
Obveze i vrednovanje studenata
Pohađanje nastave
Pohađanje nastave je obavezno i nastavnik vodi evidenciju pohađanja za svakoga studenta.
Predavanja i vježbe se izvode u bloku od po 2 sata prema rasporedu.
Osim prisustvovanja klasičnoj nastavi na predavanjima i vježbama studenti su dužni koristiti sustav za učenje Merlin (moodle.srce.hr/2019-2020/).
Pisani ispit
Tijekom semestra pisat će se dva kolokvija koji će uključivati pitanja iz gradiva predavanja i na svakom od njih student će moći skupiti maksimalno 20 bodova. Bodovi ostvareni na kolokviju pretvaraju se u ocjenske ako je student točno odgovorio na barem 50% pitanja.
Kontinuirana provjera znanja
Tijekom semestra pisat će se dvije kontrolne zadaće koje će uključivati praktične zadatke iz gradiva vježbi i na svakom od njih student će moći skupiti maksimalno 15 bodova. Bodovi ostvareni na kontrolnoj zadaći pretvaraju se u ocjenske ako je student točno riješio barem 50% zadataka.
Projekt
Tijekom semestra studenti će u grupama po dvoje ili troje odabrati projekt koji će izraditi, predati prije završetka semestra i obraniti usmenim putem. Projekt se sastoji se od izrade programskog koda koji rješava određeni problem i pripadne dokumentacije. Vrednovat će se točnost i potpunost predanog programskog koda i pripadne dokumentacije te opis načina rješavanja danog problema. Da bi student mogao pristupiti usmenoj obrani projekta, mora barem jednom doći na konzultacije s djelomično izrađenim projektom.
Ocjena iz kolegija
Završni ispit
Kontinuiranim radom tijekom semestra na prethodno opisani način studenti mogu ostvariti svih 100 ocjenskih bodova. Završnog ispita nema.
Studenti koji su skupili najmanje 50 ocjenskih bodova dobivaju konačnu ocjenu.
Student koji je zadovoljio uvjet za dobivanje konačne ocjene ispit prijavljuje za ispitni rok. Na ispitnom roku se samo vrši upis dobivene ocjene.
Konačna ocjena
Donosi se na osnovu zbroja svih bodova prikupljenih tijekom izvođenja nastave prema sljedećoj skali:
- A -- 90%--100% (ekvivalent: izvrstan 5)
- B -- 75%--89,9% (ekvivalent: vrlo dobar 4)
- C -- 60%--74,9% (ekvivalent: dobar 3)
- D -- 50%--59,9% (ekvivalent: dovoljan 2)
- F -- 0%--49,9% (ekvivalent: nedovoljan 1)
Ispitni rokovi
Redoviti:
- 4. veljače 2020.
- 18. veljače 2020.
Izvanredni:
- 31. ožujka 2020.
- 8. rujna 2020.
RASPORED NASTAVE -- zimski (V) semestar ak. god. 2019./2020.
Nastava će se na predmetu odvijati u zimskom semestru prema sljedećem rasporedu:
- predavanja: srijeda 8:15--9:45, prostorija O-358
- vježbe: srijeda 14:15--15:45, prostorija O-359
Tj. | Datum | Vrijeme | Prostor | Tema | Nastava | Izvođač |
---|---|---|---|---|---|---|
1. | 2. listopada 2019. | 8:15--9:45 | O-358 | Uvod. Pojam i osnovne ideje računanja na grafičkim procesorima | P | izv. prof. dr. sc. Božidar Kovačić |
1. | 2. listopada 2019. | 14:15--15:45 | O-359 | Razvoj programa na platformi ROCm (CUDA). Biblioteke rocPRIM i rocRAND (cuRAND) | V | v. pred. dr. sc. Vedran Miletić |
2. | 9. listopada 2019. | 8:15--9:45 | O-358 | Povijest razvoja grafike i računanja na grafičkim procesorima | P | izv. prof. dr. sc. Božidar Kovačić |
2. | 9. listopada 2019. | 14:15--15:45 | online | Arhitektura platforme ROCm (CUDA) | V | v. pred. dr. sc. Vedran Miletić |
3. | 16. listopada 2019. | 8:15--9:45 | O-358 | Paralelizam zasnovan na podacima. Struktura programa. Množenje matrica | P | izv. prof. dr. sc. Božidar Kovačić |
3. | 16. listopada 2019. | 14:15--15:45 | O-359 | Biblioteka rocBLAS (cuBLAS) | V | v. pred. dr. sc. Vedran Miletić |
4. | 23. listopada 2019. | 8:15--9:45 | O-358 | Memorije uređaja i prijenos podataka. Zrna i višenitni rad | P | izv. prof. dr. sc. Božidar Kovačić |
4. | 23. listopada 2019. | 14:15--15:45 | O-359 | Biblioteka rocSPARSE (cuSPARSE) i rocALUTION | V | v. pred. dr. sc. Vedran Miletić |
5. | 30. listopada 2019. | 8:15--9:45 | O-358 | Indeksi blokova i niti. Redanje izvođenja zrna | P | izv. prof. dr. sc. Božidar Kovačić |
5. | 30. listopada 2019. | 14:15--15:45 | O-359 | Biblioteke rocSOLVER (cuSOLVER) i rocFFT (cuFFT) | V | v. pred. dr. sc. Vedran Miletić |
6. | 6. studeni 2019. | 8:15--9:45 | O-358 | Tipovi memorija. Tehnike za smanjenje korištenja globalne memorije | P | izv. prof. dr. sc. Božidar Kovačić |
6. | 6. studeni 2019. | 14:15--17:45 | O-359 | 1. kontrolna zadaća | I | v. pred. dr. sc. Vedran Miletić |
7. | 13. studeni 2019. | 8:15--9:45 | O-358 | Memorija kao ograničavajući faktor kod paralelizacije. Tehnike za poboljšanje performansi | P | izv. prof. dr. sc. Božidar Kovačić |
7. | 13. studeni 2019. | 14:15--15:45 | O-359 | Biblioteke hipBLAS i hipSPARSE | V | v. pred. dr. sc. Vedran Miletić |
8. | 20. studeni 2019. | 8:15--9:45 | O-358 | Dinamičko particioniranje resursa. Pretpreuzimanje podataka. Granularnosti niti | P | izv. prof. dr. sc. Božidar Kovačić |
8. | 20. studeni 2019. | 14:15--15:45 | O-359 | Biblioteke hipCUB (CUB) i Thrust | V | v. pred. dr. sc. Vedran Miletić |
9. | 27. studeni 2019. | 14:00 | online | Objavljene ponuđene teme projekata | Z | v. pred. dr. sc. Vedran Miletić |
9. | 27. studeni 2019. | 8:15--9:45 | O-358 | 1. kolokvij | I | izv. prof. dr. sc. Božidar Kovačić |
9. | 27. studeni 2019. | 14:15--15:45 | O-359 | Dokumentiranje programa razvijenih na platformi ROCm (CUDA) | V | v. pred. dr. sc. Vedran Miletić |
10. | 4. prosinca 2019. | 8:15--9:45 | O-358 | Problemi računanja s pomičnim zarezom: preciznost i zaokruživanje brojeva | P | izv. prof. dr. sc. Božidar Kovačić |
10. | 4. prosinca 2019. | 14:15--15:45 | O-359 | Biblioteke hipDNN (cuDNN) i Tensorflow (MXNet) | V | v. pred. dr. sc. Vedran Miletić |
11. | 11. prosinca 2019. | 14:00 | online | Rok za odabir teme projekta | Z | v. pred. dr. sc. Vedran Miletić |
11. | 11. prosinca 2019. | 8:15--9:45 | O-358 | Studijski slučajevi: obrada slika magnetske rezonance te vizualizacija i analiza molekula | P | izv. prof. dr. sc. Božidar Kovačić |
11. | 11. prosinca 2019. | 14:15--15:45 | O-359 | Mjerenje performansi izvođenja programa na platformi ROCm (CUDA) | V | v. pred. dr. sc. Vedran Miletić |
12. | 18. prosinca 2019. | 8:15--9:45 | O-358 | Paralelno programiranje i računsko razmišljanje | P | izv. prof. dr. sc. Božidar Kovačić |
12. | 18. prosinca 2019. | 14:15--17:45 | O-359 | 2. kontrolna zadaća | I | v. pred. dr. sc. Vedran Miletić |
13. | 8. siječnja 2020. | 8:15--9:45 | O-358 | Programiranje aplikacija za heterogena superračunala | P | izv. prof. dr. sc. Božidar Kovačić |
13. | 8. siječnja 2020. | 14:15--15:45 | O-359 | Prevođenje OpenCL C koda u LLVM-ovu srednju reprezentaciju | V | v. pred. dr. sc. Vedran Miletić |
14. | 15. siječnja 2020. | 8:15--9:45 | O-358 | Pogled u budućnost: evolucija heterogenih arhitektura i programskih okruženja | P | izv. prof. dr. sc. Božidar Kovačić |
14. | 15. siječnja 2020. | 14:15--15:45 | O-359 | Prevođenje LLVM-ove srednje reprezentacije u strojni kod za mikroarhitekture GCN i RDNA | V | v. pred. dr. sc. Vedran Miletić |
15. | 22. siječnja 2020. | 8:15--9:45 | O-358 | 2. kolokvij | I | izv. prof. dr. sc. Božidar Kovačić |
15. | 22. siječnja 2020. | 14:15--15:45 | O-359 | LLVM-ovi analitički i transformacijski prolazi kod prevođenja koda | V | v. pred. dr. sc. Vedran Miletić |
16. | 29. siječnja 2020. | 14:00 | online | Rok za predaju projekta | Z | v. pred. dr. sc. Vedran Miletić |
P -- predavanja
V -- vježbe
I -- pisani ili usmeni ispit, kontinuirana provjera znanja
Z -- samostalni zadaci (praktični rad, projekt)