Grafikus processzorok tudományos célú programozása 2 ea.

Az előadás időpontja: Hétfőként, 12:15-13:45

Neptun kód: ff2n1i09
Helyszín:

  • Október 2. hétfőig bezárólag az Északi Tömb 2.105,
  • Október 9. - November 13. között a Déli Tömb 3-716,
  • November 20. - December 11. ismét az Északi Tömb 2.105

Jegyszerzés:

Szóbeli Vizsga az előadás diák anyagából + Programozási feladat(ok) megoldása és bemutatása.

Ajánlott irodalom az elméleti részhez:

Bartosz Milewski - Category Theory for Programmers

Online változat

Pdf változat

Szorgalmi feladatok

  • minden feladatot max 1 ember választhat
  • jelentkezés a feladatra, illetve kérdés, pontosítás e-mailben
Szorgalmi feladatok I. (frissítve 2017. 10. 16., az 1. és 4. feladat már nem választható)

Leadási határidő: November 13.
A szorgalmi feladatok helyes megoldásáért a kevesebb feladatot kell teljesíteni a vizsgán.

Szorgalmi feladatok II. (az 1. feladat már nem választható)

Leadási határidő: Január 7.
A szorgalmi feladatok helyes megoldásáért a kevesebb feladatot kell teljesíteni a vizsgán.

Előadás anyagok (zárójelben az utolsó frissítés dátumával):

  1. fejezet: Bevezetés (2017 10 02)
  2. fejezet: Funkcionális Programozás Elemei (2017 10 02)
  3. fejezet: Lineáris Algebra Funkcionálisan
  4. fejezet: Funkcionális primitívek GPU-n (2017 11 06)
  5. fejezet: Közönséges Diffegyenlet megoldók, csúszóablak műveletek és Monte-Carlo integrálás (2017 11 27)
  6. fejezet: Numerikus integrálok
  7. fejezet: Közönséges Diffegyenletek adaptív megoldói
  8. fejezet: Véges Differencia sémák és FFT funkcionálisan
    (l. az Összefoglalás diasor elejét alább)
  9. fejezet: GPU Funkcionális programozás példák CUDA-ban és SYCL-ben

Az előadáshoz kapcsolódó GitHub mappa: github.com/Wigner-GPU-Lab/Teaching/tree/master/GPGPU2.
Általában minden fálj csak külön önmagában egy demonstráció, nem fordítandó egybe az egész. Később majd átszervezésre kerül a repo.

Minimális Map és Reduce implementáció CUDA-ban és SYCL-ben
Reduce prezentáció, CUDA-hoz
Reduce példakód, SYCL
Véges differencia sémák (link az együtthatók számolásához)
Összefoglalás az utolsó órai anyagról (2015)

Tematika:

  1. Bevezetés a funkcionális programozásba, Kategóriaelméleti létminimum
  2. Funkcionális alapelemek: Functor, Applicative, Monad, Fold, Zip, Fixpont kombinátor
  3. Funkcionális programozás a C++ template-metanyelv szintjén
  4. Lineáris algebra felépítése funkcionálisan
  5. Lineáris algebra felépítése funkcionálisan a GPU-n történő számolások sajátosságaival
  6. Végeselem diszkretizációk
  7. Közönséges differenciálegyenlet rendszerek
  8. Klasszikus N-test problémák
  9. Statisztikus fizikai szimulációk
  10. Monte-Carlo szimulációk
  11. Parciális differenciálegyenletek megoldása végeselem diszkretizációval
  12. Parciális differenciálegyenletek megoldása bázistranszformációs módszerekkel

Példakódok: frissítve!
Functor, Applicative, Monad C++-ban std::future Functor, C++-ban ODE megoldó

Régebbi példakódok:

Funkcionális példa 1. (Linalg)
Funkcionális példa 2. (ODE léptető)
Funkcionális példa 3. (Numerikus integrálok)
Funkcionális példa 4. (Véges differencia sémák) (LinearForm kód)
Funkcionális példa 5. (Adaptív ODE megoldó)
Funkcionális példa 6. (FFT)
Funkcionális példa 7. (Expression tree alapú párhuzamosítás)

Korábbi szorgalmik megoldásai:
Fordítás idejű Gauss elimináció véges differencia séma generálásához(2015)