Jegyzetek
Előtanumányok
- A tárgy második fele részben épít a Logikai tervezés tárgyra, így az ott tanultakat célszerű átismételni.
-
C programozási ismeretek, kiemelten:
- C Storage class-ok (static, volatile, stb)
- C tömbök (az Arrays in Detail rész is)
- C pointerek (a Pointers in Detail rész is)
- Memória alignment; kezelése: aligned_alloc (szabványos); _aligned_malloc (Visual Studio)
Szoftverek
-
2022. ősz
- A CPU-s és GPU-s gyakorlatokhoz a "Visual Studio 2019 Community Edition"-t használjuk, ez INNEN letölthető. A használt CPU által támogatott utasításkészletek ellenőrzése a CPU-Z programmal tehető meg. FONTOS! Egy idő után a Community Edition licenszet kér, ez egy Microsoft account-ba történő belépéstsel orvosolható.
- Az OpenCL kódszínezéshez praktikus az "Intel® SDK for OpenCL™ Applications" installálása INNEN.
- OpenCL driver meglétének ellenőrzése a clinfo programmal a legegyszerűbb, ez INNEN letölthető. Amenniyben nincs OpenCL eszköz, úgy az Intel CPU Runtime for OpenCL installálása ajánlott.
- OpenCL debug-oláshoz hasznos lehet az oclgrind, ennek a jól működő 18.3-as verziója INNEN letölthető (lassú!). További információk ITT.
- Az FPGA-s gyakorlatokhoz (és házi feladathoz) a Xilinx Vivado 2021.1 szükséges, INNEN tölthető. Elegendő a Kintex-7 FPGA család installálása.
-
A VIK kari felhőben rendelkezésre áll egy virtuális gép template (template név: "VIMIMA14 & VIMIMA15"), amely tartalmazza a szükséges szoftvereket (Cloud útmutató; USB forwarding útmutató).
-
Jelenléti oktatás esetén-
A CPU-s és GPU-s gyakorlatokhoz és a házi feladathoz a Visual Studio 2015 fejlesztői környezetet használjuk, az ingyenes Community Edition megfelelő. Ennek web installere INNEN, a teljes ISO fájl INNEN tölthető le. -
A GPU programozáshoz az NVIDIA CUDA Toolkit-re is szükség lesz, ebből kompatibilitási okok miatt régebbi, 8.0 verziót használunk. INNEN tölthető le. A CUDA Toolkit-t a Visual Studio után kell telepíteni. -
A Xilinx HLS része az ingyenes Vivado Webpack verziónak. Ez letölthető a Xilinx oldaláról. -
A szükséges szoftverek rendelkezésre állnak egy virtuális gépben, ami a BME cloud-ban érhető el. Ezen belül a VIK Cloud-ba kell belépni és a Windows 10 VIMIMA15 template-t használva kell létrehozni a virtuális gépet (Cloud útmutató; USB forwarding útmutató). A Cloud-ban nincs NVIDIA GPU virtualizáció, így CUDA kódot fordítani ugyan lehet, de futtatni nem.
-
Előadások
Processzoros rendszerek
- Bevezetés, architektúrák, PCI, PCIe: fóliák letöltése
- Vektorizáció (SSE/AVX), feldolgozás több szálon (OpenMP): fóliák letöltése
- Mátrix szorzás példa kódok
-
Ajánlott irodalom:
- Intel intrinsic guide (SSE és AVX intrinsic-ek)
- ARM NEON intrinsic guide
- Tuomas Tonteri: A practical guide to SSE SIMD with C++
GPU-k, CUDA
- Előadás fóliák letöltése
-
Ajánlott irodalom:
- CUDA C Programming Guide (Cuda Toolkit dokumentáció)
- CUDA C Best Practices Guide (Cuda Toolkit dokumentáció)
- Shane Cook: CUDA Programming A Developer’s Guide to Parallel Computing with GPUs
-
Jason Sanders, Edward Kandrot: CUDA by Example
Magas szintű szintézis
- Xilinx Vivado High-Level Synthesis User Guide
-
Xilinx Vivado HLS előadás fóliák
- Bevezető
- Adattípusok
- Teljesítmény növelés (unroll, pipeline, dataflow, particionálás)
- Erőforrás igény csökkentés
- Interfész beállítások
- Egyebek (nem törzsanyag): kódolási megfonotlások, periféria létrehozás (block design)
Parciális rekonfuguráció
- Parciális rekonfiguráció bevezető
- Parciális rekonfiguráció Xilinx FPGA-kban - alapok
- Korábbi anyagok
Gyakorlatok
Gyakorlat útmutató az első két gyakorlati feladathoz.
- 1. gyakorlati feladat: 2D konvolúció CPU-n
- 2. gyakorlati feladat: 2D konvolúció OpenCL-ben
- 3. gyakorlati feladat: FIR szűrő megvalósítása Vivado HLS-ben
Szántó Péter, 2015. szeptember 8. 12:28 | Legutóbb frissítve: 2022. december 19. 11:05