Delavnica: Nadgradnja aplikacij CUDA C++ na več vozlišč

Europe/Ljubljana
MS Teams

MS Teams

Domen Verber, Jani Dugonik
Description

Opis: Na tej delavnici se boste spoznali in preizkusili orodja in tehnike potrebne za razvoj aplikacij CUDA C/C++, ki se lahko učinkovito prilagajajo superračunalniškim gručam opremljenimi z grafičnimi procesorji NVIDIA. Na praktičnih primerih boste dopolnili programsko kodo in preizkusili njeno izvajanje v interaktivnem oblačnem okolju, ki vsebuje več grafičnih procesorjev NVIDIA. Spoznali boste nekaj osnovnih programskih metod, ki omogočajo učinkovito izvajanje takšnih aplikacij v računalnikih gručah. Pričeli bomo z uporabo klasičnega MPI programskega vmesnika (Vmesnika za posredovanje sporočil/ Message Passing Interface - MPI), ki je nadgrajen z arhitekturno rešitvijo CUDA, in potem nadaljevali z glavno tematiko tega tečaja, programskim vmesnikom NVSHMEM.

Podrobnejši opis: Sodobno visokozmogljivo računalništvo (HPC), aplikacije za globoko učenje in podobne zahtevajo za učinkovito delovanje računsko moč grafičnih procesnih enot (GPE) na ravni računalniških gruč in omrežij. Razvoj aplikacij s arhitekturno rešitvijo CUDA, ki omogoča učinkovito izrabo grafičnih procesnih enot v računalniških gručah, zahteva poseben nabor veščin. Na tej delavnici boste spoznali in praktično preizkusili nekaj orodij in tehnik, potrebnih za pisanje aplikacij s programskim ogrodjem CUDA C/C++, ki se lahko učinkovito prilagajajo izvajanju aplikacij v gručah opremljenimi z GPE NVIDIA.

Tekom delavnice boste dopolnili praktične primere kode napisane s programskim ogrodjem CUDA C/C++ in jo preizkusili v interaktivnem oblačnem okolju, ki podpira več GPE. Spoznali boste nekaj osnovnih programskih metod za delo z več GPE, vključno s programskim vmesnikom za posredovanje sporočil (MPI), ki ima vključeno podporo arhitekture CUDA, in z NVSHMEM, ki bo osrednja točka delavnice.

NVSHMEM je programski vmesnik za vzporedno izvajanje programov na distribuiranih okoljih, ki temelji na odprtokodni rešitvi OpenSHMEM in ki zagotavlja učinkovito in razširljivo komunikacijo na gručah opremljeni z grafičnimi procesorji NVIDIA. NVSHMEM ustvari skupni pomnilniški prostor za podatke, ki obsegajo pomnilnike več grafičnih procesorjev. Do tega pomnilniškega prostora lahko transparentno dostopajo grafične procesne enote, centralne procesne enote in operacije povezane s tokovi CUDA. Asinhroni prenos podatkov, ki ga NVSHMEM omogoča, zmanjša stroške sinhronizacije med CPE in GPE. NVSMEM omogoča tudi zaganjanje jeder, ki se izvajajo daljši čas in vključujejo tako komunikacijo med enotami in tudi računanje. S sem se zmanjšajo režijski stroški velikih aplikacij, ki se izvajajo na večjem številu vozlišč. NVSHMEM je je učinkovito uporabljen v najzmogljivejših superračunalniških sistemi, kot je superračunalnik Summit (Oak Ridge, Leadership Computing Facility), superračunalnik Sierra (Nacionalni laboratorija Lawrence Livermore) in superračunalniška rešitev podjetja NVIDIA, DGX A100.

Potek izobraževanja: Delavnica bo potekala na daljavo preko brskalnika na oblačni infrastrukturi AWS.

Zahtevnost: Napredna

Jezik: Slovenski

Priporočeno predznanje: Srednje izkušnje s programiranjem aplikacij CUDA C/C++

Predlagani materiali za izpolnjevanje predpogojev: 

- Osnove pospešenega računalništva s CUDA C/C++ 

- Pospeševanje aplikacij CUDA C++ z več grafičnimi procesorji

- Pospeševanje aplikacij CUDA C++ s sočasnimi tokovi 

- Osnovno znanje uporabe in izvajanja aplikacij na računalniških gručah

 

Ciljna publika: Razvijalci HPC, ki uporabljajo CUDA v omrežju ali oblaku.

Na izobraževanju pridobljena znanja:

  • Uporaba več metod za pisanje aplikacij s pomočjo programskega ogrodja CUDA C/C++ in z uporabo več grafičnih procesnih enot (GPE).
  • Uporaba različne komunikacijskih vzorcev ob uporabi več GPE in razumevanje posledic njihove uporabe in kompromisov.
  • Pisanje prenosljive in razširljive kode CUDA z eno-programske/več-podatkovne paradigme (SPMD) z uporabo protokola MPI, ki vključuje podporo za arhitekturo CUDA in protokola NVSHMEM.
  • Optimizacija kode z več GPE in paradigmo SPDM s simetričnim pomnilniškim modelom NVSHMEM in upoštevanjem zmožnosti in omejitev prenosa podatkov med več GPE.
  • Praktične izkušnje pri delu s pogostimi programskimi paradigmami aplikacij z več GPE, kot sta dekompozicija domenske množice podatkov in izmenjava podatkov, ki se med vozlišči prekrivajo.
  • Poznavanje različnih vidikov konfiguriranja in razširjanja aplikacij na gručah z vozlišči opremljenimi z GPE.

 

Omejitev števila udeležencev: 20

Virtualna lokacija: MS Teams

Organizator:

 


Predavatelji:

Ime:Domen Verber
Opis:Domen Verber je docent na Fakulteti za elektrotehniko in računalništvo Univerze v Mariboru (UM FERI) ter ambasador NVIDIA Deep Learning Institute za Univerzo v Mariboru in njihov specialist za umetno inteligenco in HPC. S problematiko HPC in umetne inteligence se ukvarja že več kot 25 let.
 domen.verber@um.si, deep.learning@um.si

 

Ime:Jani Dugonik
Opis:Jani Dugonik je raziskovalec na Fakulteti za elektrotehniko, računalništvo in informatiko Univerze v Mariboru (UM FERI). Že več kot 10 let deluje na področju obdelave naravnega jezika (predvsem strojnega prevajanja) in evolucijskih algoritmov. Zadnja leta se ukvarja z umetno inteligenco in visokozmogljivim računalništvom.
 jani.dugonik@um.si

    • 10:00 AM 10:15 AM
      Uvod (Spoznajte inštruktorja. Ustvarite račun na courses.nvidia.com/join. Spoznajte svoje interaktivno okolje JupyterLab, ki ga pospešuje GPE.)
      Conveners: Domen Verber, Jani Dugonik
    • 10:15 AM 12:15 PM
      Paradigme programiranja z več GPE (Raziščite več tehnik za programiranje aplikacij CUDA C++ za več grafičnih procesorjev z uporabo Monte Carlo približka programa CUDA C++. - Uporabite CUDA za uporabo več grafičnih procesorjev. - Naučite se omogočiti in uporabljati neposredno pomnilniško komunikacijo enakovrednih. - Napišite različico SPMD z MPI, ki podpira CUDA. )
    • 12:15 PM 1:15 PM
      Odmor
    • 1:15 PM 3:15 PM
      Uvod v NVSHMEM (Naučite se pisati kodo z NVSHMEM in razumeti njegov simetrični spominski model. - Uporabite NVSHMEM za pisanje kode SPMD za več grafičnih procesorjev. - Uporabite simetrični pomnilnik, da vsem GPE omogočite dostop do podatkov na drugih GPE. - Izvajajte prenose pomnilnika, ki jih sproži GPE.)
    • 3:15 PM 3:30 PM
      Odmor
    • 3:30 PM 5:00 PM
      Izmenjave Halo z NVSHMEM (Vadite pogoste motive kodiranja, kot so izmenjave halojev in dekompozicija domen z uporabo NVSHMEM, in delajte na oceni. - Napišite implementacijo NVSHMEM Jacobijevega reševalca Laplaceove enačbe. - Refaktorirajte enojni reševalec valovnih enačb GPE 1D z NVSHMEM. - Opravite oceno in pridobite certifikat.)
    • 5:00 PM 5:45 PM
      Končni pregled (- Spoznajte kompromise aplikacij pri gručah GPE. - Preglejte ključna spoznanja in odgovorite na vprašanja. - Izpolnite anketo na delavnici.)