Sodobni superračunalniki so zgrajeni iz številnih vozlišč z množico procesorjev in procesorskih jeder. Da bi strojno opremo znali dobro izkoristiti, moramo pripraviti programe tako, da se lahko izvajajo na več jedrih hkrati.
Na delavnici se bomo seznanili z arhitekturo sodobnih računalniških sistemov s skupnim pomnilnikom. Razpravljali bomo o procesih in nitih, opazovali obnašanje programov ter se spoprijeli z izzivi kot so zagotavljanje skladnosti podatkov, sinhronizacija, preprečevanje tveganih stanj in smrtni objem.
Programirali bomo v programskem jeziku C, programe pa bomo dopolnjevali z elementi, ki nam jih ponuja ogrodje OpenMP. Gre za industrijski standard, ki je vključen v večino prevajalnikov. Uspeh ogrodja temelji na sorazmerno preprosti uporabi in možnosti postopne paralelizacije obstoječih programov z minimalnimi spremembami kode.
Poleg tega se bomo naučili zaganjati programe na moderni računalniški gruči preko sistema Slurm. Pokazali bomo, kako dobro izkoristiti sistem s primerno izbiro vozlišč, procesorjev in jeder. Delavnica bo praktično usmerjena, z veliko sprotnimi vajami.
Med delavnico boste imeli dostop do moderne superračunalniške gruče. Koncepte, ki jih boste spoznali na delavnici, boste lahko s pridom uporabili tudi za pohitritev programov v vaših priljubljenih programskih jezikih.
Potek tečaja
Tečaj bo potekal preko sistema Zoom. Izvedli ga bomo v dveh dopoldnevih. Povezavo na sejo Zoom bomo prijavljenim sporočili naknadno.
Izvedba tečaja
1. dan:
Spoznavanje zgradbe procesorja, procesorskih jeder in pomnilniške hierarhije do nivoja, ki je potreben za večnitno programiranje na osnovnem nivoju; spoznavanje sočasnega nitenja na enem procesorskem jedru; spoznavanje konceptov večnitnega programiranja in osnovnega modela programiranja v okolju OpenMP; pisanje, zagon in merjenje učinkovitosti preprostih večnitnih programov napisanih z OpenMP v Cju.
2. dan:
Spoznavanje programskih pristopov za zagotavljanje koherentnosti podatkov in izogibanje podatkovnim nevarnostim ter ilustracija tega s pisanjem in zagonom programov z OpenMP v Cju; spoznavanje arhitekture z neenakomernim pomnilniškim dostopom ter optimizacija programov z ustrezno porazdelitvijo podatkov po pomnilniku.
Potrebna predznanja
Poznavanje odjemalca SSH in vmesne programske opreme SLURM (Delavnica Osnove superračunalništva)
Znanje programiranja, zaželeno poznavanje programskega jezika C.
Pridobljena znanja
Po končanem tečaju boste:
- razumeli, kako večjedrni procesor podpira večnitno izvajanje programov,
- razumeli delovanje arhitekture z neenakomernim pomnilniškim dostopom,
- poznali okolje OpenMP za pisanje večnitnih programov v jezikih C/C++ in Fortran,
- znali pisati učinkovite večnitne programe za sodobne večjedrne procesorje,
- znali programe učinkovito zagnjati na moderni superračunalniški gruči.