Short Course Description
OpenMP (Open Multi-Processing) je široko korišćen API za paralelno programiranje zajedničke memorije, omogućavajući programerima da pišu efikasne i skalabilne paralelne aplikacije za procesore sa više jezgara. Ovaj kurs je dizajniran da uvede osnove OpenMP programiranja, pružajući vještine za efikasno korištenje arhitekture dijeljene memorije. Kroz kombinaciju teoretskih sesija i praktičnih vježbi, učesnici će naučiti kako da paraleliziraju svoje aplikacije koristeći OpenMP direktive, konstrukcije za dijeljenje posla, mehanizme sinhronizacije i tehnike optimizacije performansi. Bilo da ste novi u paralelnom programiranju ili želite da poboljšate svoju stručnost, ovaj kurs nudi sveobuhvatan uvod u OpenMP za sisteme dijeljene memorije.

Sadržaj kursa
Day 1: Fundamentals of OpenMP Programming
- Sesija 1: Uvod u paralelno računarstvo i osnove OpenMP-a
- Pregled koncepta paralelnog računarstva
- Uvod u arhitekture dijeljene memorije
- Sesija 2: Paralelizacija koda sa OpenMP direktivama
- Osnovna OpenMP sintaksa i direktive (
#pragma omp
) - Paralelne regije i kreiranje niti
- Praktični primjeri osnovne paralelizacije
- Osnovna OpenMP sintaksa i direktive (
- Sesija 3: Konstrukcije dijeljenja posla u OpenMP-u
for
petlje i raspodjela zadataka među nitima- Odjeljci i pojedinačne direktive za podelu radnog opterećenja
- Praktične vježbe o konstrukcijama podjele rada
- Sesija 4: Sinhronizacija i dijeljenje podataka u OpenMP-u
- Razumijevanje zajedničkih i privatnih varijabli
- Sinhronizacijski konstrukti: kritični, atomski, barijere itd.
- Izbjegavanje uvjeta utrke i zastoja
Dan 2: Napredne tehnike i optimizacija
- Sesija 1: Napredne karakteristike OpenMP-a
- Ugniježđeni paralelizam i dinamičko upravljanje nitima
- Model zadatka u OpenMP-u (`task` and `taskwait`)
- Sesija 2: Podešavanje performansi i balansiranje opterećenja
- Profilisanje OpenMP aplikacija za uska grla u performansama
- Politike planiranja: statičko, dinamičko, vođeno zakazivanje
- Sesija 3: Otklanjanje grešaka i rukovanje greškama u OpenMP programima
- Uobičajene tehnike otklanjanja grešaka za programe zajedničke memorije
- Alati za otklanjanje grešaka (npr. GDB) i otkrivanje grešaka tokom izvođenja
- Sesija 4: Studije slučaja i najbolje prakse u OpenMP programiranju
- Realni primjeri OpenMP aplikacija u različitim domenima
- Pisanje skalabilnog i održivog koda koristeći najbolje prakse
Ishodi učenja
Do kraja ovog kursa polaznici će moći:
- Shvate principe paralelizma dijeljene memorije i ulogu OpenMP-a u sistemima s više jezgara.
- Pišu paralelne programe koristeći OpenMP direktive za distribuciju zadataka i sinhronizaciju.
- Identifikuju i riješite uobičajene probleme kao što su uvjeti utrke, zastoji i uska grla u performansama.
- Koriste napredne funkcije kao što su ugniježđeni paralelizam, zadaci i dinamičko zakazivanje za složene aplikacije.
- Optimizuju aplikacije dijeljene memorije za poboljšane performanse uz pridržavanje najboljih praksi u dizajnu koda.