Paralelni sistemi

Cilj i ishod predmeta

Usvajanje znanja i praktičnih veština za razumevanje i razvoj paralelnih računarskih sistema.

Student razume ključne koncepte i probleme razvoja paralelnih algoritama i upoznat je sa relevantnim karakteristikama savremenih paralelnih računarskih sistema.

Teorijska nastava

Paralelni računarski sistemi i Flinova taksonomija. Granice paralelizacije, Amdalov i Gustafsonov zakon. Analiza problema kako bi se pronašle mogućnosti za paralelizam. Upoznavanje sa osnovnim konceptima paralelnog programiranja. Paralelizacija upotrebom većeg broja niti i procesa. Sinhronizacija, barijere i semafori. Primeri nekih paralelnih algoritama: algoritmi sa gustim matricama, sortiranje, grafovski algoritmi, dinamičko programiranje, diskretna optimizacija, brza Furijeova transformacija. Razvoj softvera za računare sa velikim brojem jezgara i grafičke procesore. CUDA i pyCUDA okviri za razvoj softvera. Performanse paralelnih algoritama. Paralelizacija podataka. Vektorizacija kroz prošireni skup instrukcija Intel AVX-512. Programiranje na osnovu toka podataka.  

Praktična nastava

Proračuni ubrzanja i efikasnosti koje je moguće ostvariti paralelizacijom. Praktičan uvod u razvoj softvera u Jyputer Lab okruženju. Upotreba većeg broja niti u cilju paralelizacije i ograničenja Python interpretera (GIL). Upotreba većeg broja procesa u cilju paralelizacije. Sinhronizacija i komunikacija između procesa. Računarski klasteri i GPU hostovi. Upotreba biblioteka OpenMP, OpenCL i OpenACC. Primer paralelnih algoritama iz domena naučnog softvera, poslovnih aplikacija i operacija nad grafovima. Programsko okruženje CUDA. Primeri programa napisanih u CUDA okruženju i izvršavanje kroz pyCUDA omotač, Jyputer Lab i Google Cloud.

1 thought on “Paralelni sistemi”

Comments are closed.