Kratki kurs: Uvod u OpenMP programiranje

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.

Uvod u OpenMP programiranje

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
  • 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.