Preskoči na sadržaj

SVEUČILIŠTE U RIJECI
ODJEL ZA INFORMATIKU
Ulica Radmile Matejčić 2, Rijeka
Akademska godina 2020./2021.

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/2020-2021/

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

  1. Hwu, W. Heterogeneous system architecture: a new compute platform infrastructure. (Elsevier, 2015).
  2. Kirk, D. B. & Hwu, W. W. Programming Massively Parallel Processors: A Hands-on Approach. (Elsevier, 2016).
  3. ROCm documentation. (AMD, 2020). Dostupno na: rocmdocs.amd.com
  4. CUDA C Programming Guide. (NVIDIA, 2020). Dostupno na: docs.nvidia.com/cuda/cuda-c-programming-guide/
  5. Skripte, prezentacije i ostali materijali za učenje dostupni u e-kolegiju.

Popis literature koja se preporučuje kao dopunska

  1. Kaeli, D. R., Mistry, P., Schaa, D. & Zhang, D. P. Heterogeneous Computing with OpenCL 2.0. (Elsevier/Morgan Kaufmann, 2015).
  2. OpenCL Overview. (Khronos Group, 2017). Dostupno na: www.khronos.org/opencl/
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
Završni ispit 2 7--8 Dizajn, implementacija i prezentacija heterogenog paralelnog algoritma 30 bodova prema definiranim kriterijima 30
UKUPNO 5 100

Obveze i vrednovanje studenata

Pohađanje nastave

Nastava se odvija prema mješovitom modelu u kombinaciji klasične nastave u učionici i online nastave uz pomoć sustava za e-učenje Merlin (moodle.srce.hr/2020-2021/).

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.

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.

Završni ispit

Tijekom semestra studenti će u grupama po dvoje ili troje odabrati projekt koji će izraditi i predati neposredno prije ispitnog roka, a zatim na završnom ispitu obraniti usmenim putem. Projekt se sastoji se od izrade programskog koda koji rješava određeni problem korištenjem heterogenog paralelnog algoritma 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

Kontinuirani rad i završni ispit

Kontinuiranim radom tijekom semestra na prethodno opisani način studenti mogu ostvariti najviše 70 ocjenskih bodova, a da bi mogli pristupiti završnom ispitu moraju ostvarili 50% i više bodova (minimalno 35).

Studenti koji su skupili najmanje 35 ocjenskih bodova, mogu pristupiti završnom ispitu.

Završni ispit nosi udio od maksimalno 30 ocjenskih bodova, a smatra se položenim samo ako na njemu student postigne minimalno 50%-ni uspjeh (ispitni prag je 50% uspješno riješenih zadataka).

Ukoliko je završni ispit prolazan, skupljeni bodovi će se pribrojati prethodnima i prema ukupnom rezultatu formirati će se pripadajuća ocjena. U suprotnom, student ima pravo pristupa završnom ispitu još 2 puta (ukupno do 3 puta).

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:

  • 3. veljače 2021.
  • 17. veljače 2021.

Izvanredni:

  • 31. ožujka 2021.
  • 15. rujna 2021.

RASPORED NASTAVE -- zimski (V) semestar ak. god. 2020./2021.

Nastava će se na predmetu odvijati u zimskom semestru prema sljedećem rasporedu:

  • predavanja: srijeda 8:15--9:45, prostorija O-358 i online
  • vježbe: ponedjeljak 10:15--11:45, prostorija O-366 i online
Tj. Datum Vrijeme Prostor Tema Nastava Izvođač
1. 5. 10. 2020. 10:15--11:45 O-366 Postavljanje okoline za razvoj programa na platformi ROCm (CUDA). Standardi C++11, C++14 i C++17. Formatiranje znakovnih nizova bibliotekom V v. pred. dr. sc. Vedran Miletić
1. 7. 10. 2020. 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ć
2. 12. 10. 2020. 10:15--11:45 O-366 Arhitektura platforme ROCm (CUDA). Prevođenje i pokretanje gotovih programa otvorenog koda. Mjerenje performansi V v. pred. dr. sc. Vedran Miletić
2. 14. 10. 2020. 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ć
3. 19. 10. 2020. 10:15--11:45 O-366 Osnove rada s grafičkim procesorom: biblioteka rocPRIM (ugrađene funkcije CUDA-e) V v. pred. dr. sc. Vedran Miletić
3. 21. 10. 2020. 8:15--9:45 O-358 Paralelizam zasnovan na podacima. Struktura programa. Množenje matrica P izv. prof. dr. sc. Božidar Kovačić
4. 26. 10. 2020. 10:15--11:45 online Generiranje slučajnih brojeva: C++11 biblioteka random i biblioteka rocRAND V v. pred. dr. sc. Vedran Miletić
4. 28. 10. 2020. 8:15--9:45 online Memorije uređaja i prijenos podataka. Zrna i višenitni rad P izv. prof. dr. sc. Božidar Kovačić
5. 2. 11. 2020. 10:15--11:45 online Dokumentiranje programskog koda alatom Doxygen. Dokumentiranje programa alatom MkDocs V v. pred. dr. sc. Vedran Miletić
5. 4. 11. 2020. 8:15--9:45 online Indeksi blokova i niti. Redanje izvođenja zrna P izv. prof. dr. sc. Božidar Kovačić
6. 9. 11. 2020. 10:15--11:45 online 1. kontrolna zadaća I v. pred. dr. sc. Vedran Miletić
6. 11. 11. 2020. 8:15--9:45 online Tipovi memorija. Tehnike za smanjenje korištenja globalne memorije. Memorija kao ograničavajući faktor kod paralelizacije P izv. prof. dr. sc. Božidar Kovačić
7. 16. 11. 2020. 10:15--11:45 online Operacije na vektorima i matricama: aplikacijska programska sučelja BLAS i LAPACK. C++ biblioteka Eigen V v. pred. dr. sc. Vedran Miletić
8. 23. 11. 2020. 10:15--11:45 online Operacije na vektorima i matricama: biblioteka rocBLAS (cuBLAS) V v. pred. dr. sc. Vedran Miletić
8. 25. 11. 2020. 8:15--9:45 online Tehnike za poboljšanje performansi. Dinamičko particioniranje resursa. Pretpreuzimanje podataka. Granularnosti niti P izv. prof. dr. sc. Božidar Kovačić
9. 30. 11. 2020. 10:00 online Objavljene ponuđene teme projekata Z v. pred. dr. sc. Vedran Miletić
9. 30. 11. 2020. 10:15--11:45 online Rješavanje sustava linearnih jednadžbi: biblioteka rocSOLVER (cuSOLVER) V v. pred. dr. sc. Vedran Miletić
9. 2. 12. 2020. 8:15--9:45 online 1. kolokvij I izv. prof. dr. sc. Božidar Kovačić
10. 7. 12. 2020. 10:15--11:45 online Rijetke matrice: biblioteke rocSPARSE i rocALUTION (cuSPARSE) V v. pred. dr. sc. Vedran Miletić
10. 9. 12. 2020. 8:15--9:45 online Problemi računanja s pomičnim zarezom: preciznost i zaokruživanje brojeva P izv. prof. dr. sc. Božidar Kovačić
11. 14. 12. 2020. 10:00 online Rok za odabir teme projekta Z v. pred. dr. sc. Vedran Miletić
11. 14. 12. 2020. 10:15--11:45 online Brza Fourierova transformacija: rocFFT (cuFFT) V v. pred. dr. sc. Vedran Miletić
11. 16. 12. 2020. 8:15--9:45 online Studijski slučajevi: obrada slika magnetske rezonance te vizualizacija i analiza molekula P izv. prof. dr. sc. Božidar Kovačić
12. 21. 12. 2020. 10:15--11:45 online 2. kontrolna zadaća I v. pred. dr. sc. Vedran Miletić
12. 23. 12. 2020. 8:15--9:45 online Paralelno programiranje i računsko razmišljanje P izv. prof. dr. sc. Božidar Kovačić
13. 11. 1. 2021. 10:15--11:45 online Prevođenje OpenCL C koda u LLVM-ovu srednju reprezentaciju V v. pred. dr. sc. Vedran Miletić
13. 13. 1. 2021. 8:15--9:45 online Programiranje aplikacija za heterogena superračunala P izv. prof. dr. sc. Božidar Kovačić
14. 18. 1. 2021. 10:15--11:45 online Prevođenje LLVM-ove srednje reprezentacije u strojni kod za mikroarhitekture GCN i RDNA V v. pred. dr. sc. Vedran Miletić
14. 20. 1. 2021. 8:15--9:45 online Pogled u budućnost: evolucija heterogenih arhitektura i programskih okruženja P izv. prof. dr. sc. Božidar Kovačić
15. 25. 1. 2021. 10:15--11:45 online LLVM-ovi analitički i transformacijski prolazi kod prevođenja koda V v. pred. dr. sc. Vedran Miletić
15. 27. 1. 2021. 8:15--9:45 online 2. kolokvij I izv. prof. dr. sc. Božidar Kovačić

P -- predavanja
V -- vježbe
I -- pisani ili usmeni ispit, kontinuirana provjera znanja
Z -- samostalni zadaci (esej, praktični rad, projekt)

Napomena: Moguće su izmjene rasporeda nastave. Za nove verzije rasporeda potrebno je pratiti obavijesti u e‑kolegiju.