Sveučilište u Rijeci
ODJEL ZA INFORMATIKU
Ulica Radmile Matejčić 2, Rijeka
Akademska 2020/2021. godina

PARALELNO PROGRAMIRANJE NA HETEROGENIM SUSTAVIMA

Studij: Preddiplomski studij informatike
Godina i semestar: 3. godina, 5. semestar

Web stranice predmeta: https://lab.miletic.net/hr/nastava/kolegiji/PPHS/ https://moodle.srce.hr/2020-2021/

ECTS bodovi: 5

Nastavno opterećenje: 2 + 2

Nositelj predmeta:

izv. prof. dr. sc. Božidar Kovačić

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ć

Ured: Ulica Radmile Matejčić 2, O-520
Vrijeme konzultacija: utorkom od 12 do 14 sati ili po dogovoru e-mailom

PARALELNO PROGRAMIRANJE NA HETEROGENIM SUSTAVIMA

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: https://rocmdocs.amd.com/

  4. CUDA C Programming Guide. (NVIDIA, 2020). Dostupno na: https://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: https://www.khronos.org/opencl/

  3. Advanced Micro Devices. “RDNA 1.0” Instruction Set Architecture, Reference Guide. (AMD Developer Central, 2019). Dostupno na: https://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: https://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: https://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: https://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: https://developer.amd.com/wordpress/media/2013/12/AMD_OpenCL_Programming_User_Guide2.pdf

  8. LLVM documentation. Dostupno na: https://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 (https://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.

Ocjena iz kolegija

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.

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.

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 (I) semestar ak. godine 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 {fmt}

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)