Kurzusleírás
GPU-gyorsított számítást bemutató előadás
- Heterogén számítástechnika és CPU-GPU architektúra
- CUDA végrehajtási és memóriaterek
- CUDA C++ fordítása nvcc és CMake használatával
- A GPU fejlesztői környezet ellenőrzése
Párhuzamos algoritmusok a Thrust és a CUB segítségével
- GPU-gyorsított rendezés, redukció és transzformáció
- STL-algoritmusok refactorolása GPU végrehajtásra
- Thrust eszközök vektorai és végrehajtási politika
- CUB eszköz szintű primitívek egyedi pipeline-okhoz
GPU memóriarchitektúra és menedzsment
- Globalis, konstans és textúra memóriatípusok
- Explicit eszköz memória allokáció és átvitel
- Egységes memória az egyszerűsített adat-hozzáférésért
- Memória koaleszkálás és hozzáférési minta optimalizálás
Aszinkron végrehajtás CUDA streamekkel
- CUDA streamek létrehozása és kezelése
- Korek végrehajtásának átfedése adatátvitellel
- CUDA események függőség-kezeléshez
- Stream prioritások és konkurencia-beállítások
Egyedi CUDA korelek írása
- A SIMT programozási modell és warp végrehajtás
- Korek elindítási konfigurációja és grid-stride hurok
- Szála indexelés és többdimenziós grid-ek
- Hibakezelés és CUDA runtime API ellenőrzések
Threads hierarchia és végrehajtási modell
- Grid-ek, blokkok és szálok eszközös kódban
- Warp-szintű primitívek és ballot műveletek
- Blokk szintű szinkronizálás és barrierek
- Foglaltság és erőforrás-használat elemzése
Kooperatív csoportok a rugalmas párhuzamossághoz
- A cooperative_groups API és csoporttípusok
- Szálblokk csempék és tiled_partition
- Grid-szintű kooperatív indítások
- Több grid szinkronizálási minták
Megosztott memória optimalizálási technikák
- Megosztott memória bankok és bankkonfliktus elkerülése
- Csempézés stratégiák mátrixműveletekhez
- Megosztott memória felhasználó által kezelt cache-ként
- cuda::shared_memory_mdspan többdimenziós nézetekhez
Korek fúziója és haladó párhuzamos minták
- Több korek egyesítése az elindítási felülírás csökkentésére
- Scan, kulcs szerinti redukció és szegmentált algoritmusok
- Atomos műveletek és lock-free adatszerkezetek
- Warp-aggregált atomosok a folyamata növelésére
Profilozás és optimalizálás az Nsight Systems segítségével
- Idővonal elemzés CPU és GPU tevékenységről
- Memória-átviteli szűk keresztmetszetek azonosítása
- Korek teljesítmény és foglaltság profilozása
- Iteratív optimalizálás Nsight Compute-val
Modern C++ jellemzők CUDA eszközös kódban
- Lambdák, constexpr és auto korelekben
- C++17 párhuzamos algoritmusok és végrehajtási politikák
- C++20 koncepciók és tartományok eszközökön
- C++23 támogatás nvcc-ben és CCCL 3.x-ben
CUDA Graphs és haladó aszinkronitás
- CUDA graphok definiálása és elindítása
- Graph rögzítése stream végrehajtásból
- Graph frissítése és feltételes végrehajtási csomópontok
- Az iteratív munkaterhelések elindítási késleltetésének csökkentése
Integrációs minták meglévő alkalmazásokhoz
- GPU-kód burkolása C++ interfészek mögé
- Több GPU és NUMA rendszerek kezelése
- Build rendszer integrációja CMake-ral és CUDA-val
- Eszközös kód hibakeresése cuda-gdb segítségével
Összegzés és legjobb gyakorlatok
- A Thrust, CUB és egyedi korelek közötti választás
- Teljesítmény-portabilitás GPU architektúrákon
- Kód szervezése és RAII a CUDA erőforrásokhoz
- Következő lépések és haladó CUDA tanulási útvonalak
Követelmények
- Alap C++ kompetencia: lambda kifejezések, sablonok és STL
- Ismertség a standard algoritmusokkal, konténerekkel és iterátorokkal
- Kényelem a hurokstruktúrákkal, feltételekkel és függvényekkel
- Nincs előzetes CUDA vagy GPU programozási tapasztalat szükséges
Célközönség
- C++ fejlesztők, akik GPU-k segítségével szeretnék gyorsítani a számításigényes alkalmazásaikat
- Szoftvermérnökök, akik átmennek a kizárólag CPU-alapú programozásból a heterogén párhuzamos programozásba
- Teljesítmény mérnökök és kvantitatív fejlesztők nagy adathalmazokkal dolgoznak
Vélemények (3)
Kezdetben a tréner tempója kicsit túl gyorsnak tett számomra, de a képzés során visszajelzést adtam, és ezt ő is elismerte, lelassította a tempót anélkül, hogy a tartalom rovására ment volna. Kiváló kapcsolatot ápolt a közönséggel, nagyon barátságos volt és nyitott a megbeszélésekre.
Alexandru Ostafi - Siemens
Kurzus - Advanced C++ : Practical workshop
Gépi fordítás
Részletes magyarázat, a pontok finom újrafogalmazása, amely nagyon hatékonyan segített megérteni az anyagot. Rod hajlandósága, hogy kétszer is ellenőrizze a felvetett ritka, nehezen érthető kérdéseket, hogy biztos legyen benne, válaszai 100%-ig pontosak. Ezenkívül érdeklődése az alternatív kódolási stílusok előnyeinek és hátrányainak megvitatása iránt, így nemcsak azt tanultuk meg, hogyan használjuk a C++-t a tervezett módon, hanem azt is, hogy miért érdemes így csinálni.
Nick Dillon - cellxica Ltd
Kurzus - Using C++ in Embedded Systems - Applying C++11/C++14
Gépi fordítás
Tapasztalatmegosztás, az oktató tudása és értékes.
Carey Fan - Logitech
Kurzus - C/C++ Secure Coding
Gépi fordítás