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.

Szorgalmi feladatok

(frissítve 2017. 10. 16.)
  • minden feladatot max 1 ember választhat
  • jelentkezés a feladatra, illetve kérdés, pontosítás e-mailben

Leadási határidő: November 13.
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: Közönséges Diffegyenlet megoldók Funkcionálisan
  5. fejezet: Numerikus integrálok
  6. fejezet: Közönséges Diffegyenletek adaptív megoldói
  7. fejezet: Véges Differencia sémák és FFT funkcionálisan
    (l. az Összefoglalás diasor elejét alább)
  8. 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)