Paralelni algoritmi

Cilj i ishod predmeta

Usvajanje teoretskog znanja i praktičnih veština za razumevanje i razvoj paralelnih računarskih programa. Student razume ključne koncepte i probleme razvoja paralelnih algoritama, i upoznat je sa relevantnim karakteristikama savremenih paralelnih računarskih sistema. Sposoban je da osmisli i implementira paralelni algoritam za rešavanje datog problema.

Teorijska nastava

Paralelni računarski sistemi i Flinova taksonomija. Limiti paralelizacije, Amdalov i Gustafsonov zakon. Deljena, lokalna i distribuirana memorija. Performanse paralelnih algoritama. Analiza problema kako bi se pronašle mogućnosti za paralelizam. Kratak osvrt na osnove programskog jezika Python. Upoznavanje sa osnovnim konceptima paralelnog programiranja kroz primere u programskom jeziku Python. Paralelizacija upotrebom većeg broja niti. Paralelizacija upotrebom većeg broja procesa. Sinhronizacija, barijere i semafori. Razvoj softvera za računare sa velikim brojem jezgara i grafičke procesore. CUDA i pyCUDA okviri za razvoj softvera. Vektorizacija koda kroz Intel AVX set instrukcija. Programiranje na osnovu toka podataka.

Praktična nastava

Proračuni ubrzanja i efikasnosti koje je moguće ostvariti paralelizacijom. Praktičan uvod u programski jezik Python i razvoj softvera u Jyputer Lab okruženju. Upotreba većeg broja niti u cilju paralelizacije i ograničenja Python interpretera (Global Interpreter Lock). Upotreba većeg broja procesa u cilju paralelizacije. Sinhronizacija i komunikacija izemđu procesa. Primer paralelnih algoritama iz domena naučnog softvera, poslovnih aplikacija i rada 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 algoritmi”

Comments are closed.

3070-paralelni-algoritmi