Kurs: Paralelno programirajne na HPC-u

Opis kursa

Kurs Paralelno programiranje u računarstvu visokih performansi (HPC) osmišljen je da vas opremi osnovnim znanjem i praktičnim vještinama kako biste iskoristili snagu paralelnog računarstva. Moderna naučna, industrijska i tehnološka dostignuća zahtijevaju ogromnu računarsku snagu, koja često premašuje mogućnosti procesora s jednim jezgrom. Paralelno računanje koristi više procesora ili jezgara za izvršavanje zadataka istovremeno, drastično smanjujući vrijeme računanja i omogućavajući rješenja za ranije nerješive probleme. HPC i paralelno programiranje su u središtu napretka u oblastima kao što su numerički problemi, klimatsko modeliranje, inženjerske simulacije, finansijske simulacije i još mnogo toga. Bilo da ste istraživač, programer ili profesionalac u industriji, savladavanje paralelnog programiranja omogućit će vam da se efikasno nosite sa složenim računalnim izazovima i prilagodite svoja rješenja kako bi zadovoljili zahtjeve iz stvarnog svijeta.

Kurs je razvijen u jesen 2022. godine i sproveden je tri puta, prilagođen crnogorskim studentima i industrijskim partnerima povezanim sa NCC Montenegro.

Paralelno programiranje koje nudi NCC Montenegro

Sadržaj kursa (moduli)

  1. Uvod u računarstvo visokih performansi (HPC): Osnove HPC-a i njegov značaj u računarskim zadacima, Primene HPC-a u naučnim istraživanjima, inženjeringu i veštačkoj inteligenciji, Pregled HPC pejzaža u Crnoj Gori za istraživanje i poslovne mogućnosti
  2. Osnove paralelnog računarstva: Osnovni koncepti paralelnog računarstva, Važnost paralelizma u ubrzanju računanja, Uvod u strategije paralelizacije: paralelizam zadataka i paralelizam podataka
  3. Arhitekture paralelnog računarstva: Pregled dijeljene memorije, distribuirane memorije i hibridnih arhitektura, Snage, izazovi i primjene svakog tipa arhitekture, Studije slučaja za različite arhitektonske pristupe
  4. Modeli programiranja za paralelno računarstvo: Uvod u interfejs za prosleđivanje poruka (MPI) i otvorenu višeprocesnu obradu (OpenMP), koncepti hibridnog programiranja koji kombinuju MPI i OpenMP, komunikacija, sinhronizacija i principe raspodele radnog opterećenja
  5. Osnove Linuxa za HPC: Osnove Linux okruženja za HPC programiranje, sistemi datoteka, alati komandne linije i skriptiranje za automatizaciju, postavljanje i upravljanje razvojnim okruženjem, priprema za praktičan rad u nadolazećim modulima
  6. Razvoj paralelnih programa: Pisanje paralelnih programa na C i Python-u, implementacija MPI-a i OpenMP-a za stvarne probleme, otklanjanje grešaka i profilisanje paralelnih aplikacija
  7. Planiranje poslova i HPC upravljanje resursima: Uvod u rasporede poslova (Slurm), Efikasno upravljanje računarskim resursima, Pisanje i podnošenje skripti za posao
  8. Analiza i optimizacija performansi: Ključne metrike performansi: ubrzanje, efikasnost i skalabilnost, Alati i tehnike za analizu performansi programa, Strategije za optimizaciju paralelnih programa
  9. Tehnike hibridnog računarstva: Kombinovanje pristupa zajedničke i distribuirane memorije, Implementacija hibridnih rešenja sa MPI i OpenMP, Primeri hibridnih računarskih aplikacija u scenarijima iz stvarnog sveta
  10. Stvarne primjene paralelnog računarstva: praktične vježbe u domenima kao što su obrada podataka, simulacije i AI, studije slučaja koje pokazuju utjecaj HPC-a na složene probleme, timski projekti za rješavanje stvarnih izazova
  11. Napredne teme u paralelnom računarstvu: razmatranja dinamičkog balansiranja opterećenja i skalabilnosti, Novi trendovi u integraciji HPC-a i AI-a, Pregled budućih pravaca i mogućnosti za karijeru u HPC-u
  12. Završni projekat koji uključuje sve module kursa, Prezentaciju ishoda projekta, Pregled kursa i pripremu za nastavak učenja u HPC-u

Za koga je ovaj kurs?

Ovaj kurs je prilagođen studentima, istraživačima, inženjerima i profesionalcima koji žele da prošire svoju stručnost u paralelnom programiranju i računarstvu visokih performansi. Osnovno razumijevanje programiranja (po mogućnosti u C i/ili Python-u) i poznavanje Linuxa će biti od koristi, ali ne i obavezno.