Primjena paralelnih računala

Repozitorij

Repozitorij je prazan

Anketa

Na ovoj stranici trenutno nije odabrana niti jedna anketa!

Primjena paralelnih računala

Šifra: 284267
ECTS: 5.0
Nositelji: prof. dr. sc. Mladen Jurak
Izvođači: prof. dr. sc. Mladen Jurak - Auditorne vježbe
Prijava ispita: Studomat
Opterećenje:

1. komponenta

Vrsta nastaveUkupno
Predavanja 30
Auditorne vježbe 15
* Opterećenje je izraženo u školskim satima (1 školski sat = 45 minuta)
Opis predmeta:
CILJ KOLEGIJA:
U početnom periodu razvoja računalne tehnike svaka nova generacija računala bila je značajno brža od prethodne. Taj je trend završio oko 2005. godine i od tada je povećanje efikasnosti programa moguće uglavnom korištenjem paralelnog izvršavanja na više procesora, odnosno procesorskih jezgri. Time paralelno programiranje postaje centralna tema svih računarskih kurikuluma. Paralelizam se u računalnom sustavu pojavljuje na više razina: unutar svake pojedine jezgre mikroprocesora (vektorske operacije), unutar višejezgrenog procesora, zbog prisutnosti akceleratora u sustavu (na primjer grafičke kartice) te konačno u klasterima računala. Svakom tipu paralelizama unutar sklopovlja odgovara određen tip razvoja paralelnih programa i pripadnih biblioteka za podršku. Cilj ovog kolegija je upoznati studente s osnovnim modelima razvoja paralelnog koda i pripadnim softverskim alatima. Studenti trebaju svladati generiranje vektorskog koda, paralelno programiranje s programskim nitima, paralelno programiranje s dijeljenjem poruka i programiranje heterogenih sustava koji (danas) uključuju centralnu procesorsku jedinicu i grafičku karticu. Softverski alati koji će biti korišteni u područje vektorskog, višedretvenog i višeprocesorskog programiranja su prilično stabilni (OpenMP, C++ programske niti, MPI i slično), što nije slučaj kod programiranja na grafičkim karticama i drugim akceleratorima. Tamo imamo mogućnosti korištenja CUDA, HIP ili OpenCL programskih jezika te OpenMP, OpenACC, SYCL programskih sučelja, kao i programskih modela na višoj razini apstrakcije, kao što su Kokkos i Raja. Ciljevi kolegija u tom dijelu će se mijenjati ovisno o pozicioniranju ovih alata na tržištu.

NASTAVNI SADRŽAJI:
1. Vektorsko programiranje za superskalarne procesore. Autovektorizacija putem prevodioca, korištenje intrinzičnih naredbi te posebnih programskih biblioteka.
2. Paralelno programiranje s dijeljenom memorijom. Korištenje OpenMP direktiva i C++ sustava programskih niti/POSIX niti u jeziku C. Sinkronizacija programskih niti, implementacija dijeljenih struktura podatak i paralelnih algoritama. Memorijski model OpenMP sustava i programskog jezika C++. Atomske operacije i programiranje bez zaključavanja.
3. Paralelno programiranje s distribuiranom memorijom. Primjena MPI sustava, individualne i kolektivne operacije, paralelni ulaz i izlaz, topologije.
4. Programiranje paralelnih algoritama na grafičkim karticama (i eventualno drugim akceleratorima). Programiranje pomoću direktiva (OpenAcc i OpenMP) i primjena CUDA/OpenCL/SYCL programskih jezika/okolina.
Literatura:
  1. Parallel and High Performance Computing, R.Robey, Y. Zamora, Manning, 2021.
  2. Using MPI, treće izdanje, W. Gropp, E. Lusk, A. Skjellum, MIT, 2014.
  3. C++ Concurrency in Action, drugo izdanje, A. Williams, Manning, 2019.
  4. The Art of Writing Efficient Programs, F.G. Pikus, Packt, 2021.
  5. Parallel Programming with MPI, P.S. Pacheco, Morgan Kaufmann Publishers, 1997.
  6. Using OpenMP, B. Chapman, G. Jost, R. Van der Pas, MIT, 2008.
  7. Programming Massively Parallel Processors, A Hands-on Approach, treće izdanje, D.B. Kirk, Wen-mei W. Hwu, Morgan Kaufman, 2017.
  8. OpenCL in Action, M. Scarpino, Manning, 2012.
  9. Dokumentacija biblioteke NVIDIA CUDA, https://docs.nvidia.com/cuda/.
  10. Specifikacija programskog sučelja OpenACC, https://www.openacc.org.
  11. Specifikacija programskog sučelja OpenMP, https://www.openmp.org.
  12. Dokumentacija C++ programskog modela Kokkos, https://github.com/kokkos/kokkos-tutorials.
  13. Dokumentacija softverske biblioteke RAJA, https://raja.readthedocs.io/en/develop/.
1. semestar Ne predaje se
Izborni modul D - Znanstveno računanje - Redovni Studij - Računarstvo i matematika
Ostali izborni predmeti - Redovni Studij - Računarstvo i matematika

2. semestar
Izborni modul D - Znanstveno računanje - Redovni Studij - Računarstvo i matematika
Ostali izborni predmeti - Redovni Studij - Računarstvo i matematika
Termini konzultacija:
  • prof. dr. sc. Mladen Jurak:

    Ponedjeljak 15-17h. Molim da se prethodno najavite e-mailom.

    Lokacija: 220

Obavijesti