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.

sbobet88 slot agb99 situs slot slot777 toto AMANAHTOTO slot SLOT GACOR AMANAHTOTO toto slot88 ASIA200 ASIA200 ASIA200 bayijudy.com situs resmi bayitoto slot gacor popotogel login situs slot eropa99 hoki99 roma77 babe138 roma77 roma77 hoki99 abadicash