I daļa Ievads augstas veiktspējas skaitļošanas tehnoloģijā CUDA

Mācību kursā tiek apskatīti masīvi paralēlās skaitļošanas pieejas teorētiskie un praktiskie principi, kas tiek realizēti daudzprocesoru sistēmu un/vai grafisko procesoru aparatūras un specializētas programmatūras vides apvienojuma veidā. Mācību seminārs ietver pārskatu par augstas veiktspējas skaitļošanas aparatūras un programmatūras arhitektūras veidiem, skaitļošanas algoritmiem, lietojumbibliotēkām un rīkiem. Padziļināta uzmanība tiek pievērsta grafisko procesoru bāzētās paralēlās skaitļošanas platformas CUDA starpdisciplināram lietišķajam lietojumam, piemēram, liela apjoma datu analīzē, attēlu apstrādē un mašīnmācīšanās uzdevumos. Līdztekus teorētisko zināšanu apguvei tiek sniegta iespēja gūt praktiskas pamatiemaņas informācijas tehnoloģijas risinājumu izstrādē ar CUDA tehnoloģiju.

1. diena

CUDA arhitektūras apskats (30 min):

  • grafisko procesoru (GPU) attīstības vēsture;
  • CUDA atbalstītie GPU arhitektūras veidi.

CUDA programmēšanas apskats (30 min):

  • CUDA programmēšanas modelis;
  • CUDA programmēšanas pamatprincipi;
  • pavedienu un bloku koncepcija;
  • GPU un CPU datu apmaiņa.

Paralēlie algoritmi CUDA vidē (30 min):

  • paralēlā redukcija;
  • prefiksu summa.

Praktiskais darbs: vingrinājumi vienkāršu CUDA programmu izveidē (2 h).

2. diena

CUDA atmiņas hierarhijas apskats (30 min):

  • atmiņas līmeņi;
  • reģistra datne, konstanšu atmiņa;
  • globālā atmiņa;
  • dalītā atmiņa;
  • tekstūras atmiņa;
  • vienotā atmiņa.

CUDA bibliotēkas (20 min):

  • CUBLAS;
  • CURAND;
  • CUFFT;
  • CUSPARSE.

CUDA mijiedarbība ar datorgrafiku (20 min):

  • OpenGL sadarbspēja;
  • attēlu filtrēšana.

CUDA lietojums mašīnmācīšanās jomā (20 min):

  • dziļo neironu tīklu bibliotēka cuDNN;
  • mašīnmācīšanās bibliotēka TensorFlow.

Praktiskais darbs: CUDA izstrādes metožu lietojuma vingrinājumi (2 h):

  • datu apstrāde ar CUBLAS un CURAND;
  • attēlu apstrāde GPU vidē.

II daļa Augstas veiktspējas skaitļošanas tehnoloģijas CUDA lietišķais lietojums

Apmācību kursi ir turpinājums CUDA I daļai «Ievads augstas veiktspējas skaitļošanas tehnoloģijā CUDA». Šajos apmācību kursos uzmanība tiks pievērsta CUDA programmatūras realizācijai grafikas daudzprocesoru sistēmās, īpaši fokusējoties uz CUDA kā mākoņpakalpojuma iespējām attālinātā serveru vidē. Apmācību noslēgumā tiks piedāvāti CUDA praktiskie vingrinājumu uzdevumi RTU HPC klasterī.

1. diena

CUDA atmiņas efektīva izmantošana (30 min):

  • tekstūras, masīvi un to lietojuma iespējas;
  • CUDA atmiņas koplietošana;
  • CUDA vienotā atmiņa.

CUDA straumes un notikumi (30 min):

  • straumes un notikumi laiksakritīgai izpildei;
  • asinhrona datu kopēšana;
  • laiksakritīga kodolu izpilde un datu apmaiņa.

CUDA programmatūras atkļūdošana un profilēšana (30 min):

  • veiktspējas novērtēšana un metrika;
  • pārskats par Nvidia Nsight atkļūdošanas un profilēšanas rīku;
  • CUDA programmatūras atkļūdošana;
  • CUDA veiktspējas profilēšana. 

Praktiskais darbs: vingrinājumi lietišķu CUDA programmu izveidē (2 h):

  • N ķermeņu mijiedarbības uzdevums;
  • interaktīva šķidrumu plūsmas simulācija;
  • normalizētas korelācijas algoritma realizācija attēlu apstrādē.

2. diena

CUDA grafikas daudzprocesoru sistēmās (30 min):

  • datu apmaiņa starp grafikas procesoriem;
  • izpildes sinhronizācija.

CUDA attālinātā serveru vidē (1 h):

  • CUDA kā mākoņpakalpojums;
  • HPC klastera darbības principi un arhitektūra;
  • paralēlo CUDA uzdevumu realizācija RTU HPC klasterī.

Praktiskais darbs: vingrinājumi lietišķu CUDA programmu izveidē (2 h):

  • CUDA vingrinājumi RTU HPC klasterī;
  • fotoreālistiskas attēlveidošanas iespējas CUDA vidē.