Kerangka Materi
Pengantar Komputasi Dipercepat GPU
- Komputasi heterogen dan arsitektur CPU-GPU
- Ruang eksekusi dan memori CUDA
- Mengompilasi CUDA C++ dengan nvcc dan CMake
- Memverifikasi lingkungan pengembangan GPU
Algoritma Paralel dengan Thrust dan CUB
- Pengurutan (sort), reduksi, dan transformasi yang dipercepat GPU
- Refaktorisasi algoritma STL untuk eksekusi GPU
- Vektor perangkat Thrust dan kebijakan eksekusi
- Primitif perangkat CUB untuk pipeline kustom
Arsitektur dan Manajemen Memori GPU
- Jenis memori global, konstan, dan tekstur
- Alokasi eksplisit dan transfer memori perangkat
- Unified Memory untuk akses data yang lebih sederhana
- Koalesensi memori dan optimasi pola akses
Ekskusi Asinkron dengan Stream CUDA
- Membuat dan mengelola stream CUDA
- Menindih eksekusi kernel dengan transfer data
- Event CUDA untuk manajemen dependensi
- Prioritas stream dan tuning konkurensi
Menulis Kernel CUDA Kustom
- Model pemrograman SIMT dan eksekusi warp
- Konfigurasi peluncuran kernel dan loop grid-stride
- Pengindeksan thread dan grid multidimensi
- Penanganan error dan pemeriksaan API runtime CUDA
Hierarki Thread dan Model Eksekusi
- Grid, blok, dan thread dalam kode perangkat
- Primitif level warp dan operasi ballot
- Sinkronisasi level blok dan barriers
- Analisis occupancy dan pemanfaatan sumber daya
Cooperative Groups untuk Paralelisme Fleksibel
- API cooperative_groups dan jenis group
- Tiling blok thread dan tiled_partition
- Peluncuran kooperatif level grid
- Pola sinkronisasi multi-grid
Teknik Optimasi Shared Memory
- Bank shared memory dan penghindaran konflik bank
- Strategi tiling untuk operasi matriks
- Shared memory sebagai cache yang dikelola pengguna
- cuda::shared_memory_mdspan untuk tampilan multidimensi
Fusi Kernel dan Pola Paralel Lanjutan
- Mefusi beberapa kernel untuk mengurangi overhead peluncuran
- Scan, reduce-by-key, dan algoritma segmentasi
- Operasi atomik dan struktur data tanpa kunci (lock-free)
- Atomic agregat level warp untuk meningkatkan throughput
Profiling dan Optimasi dengan Nsight Systems
- Analisis timeline aktivitas CPU dan GPU
- Identifikasi hambatan transfer memori
- Profiling kinerja dan occupancy kernel
- Optimasi iteratif dengan Nsight Compute
Fitur C++ Modern dalam Kode Perangkat CUDA
- Lambdas, constexpr, dan auto dalam kernel
- Algoritma paralel C++17 dan kebijakan eksekusi
- Konsep dan range C++20 pada perangkat
- Dukungan C++23 dalam nvcc dan CCCL 3.x
Grafik CUDA dan Asinkronisasi Lanjutan
- Mendefinisikan dan meluncurkan grafik CUDA
- Pengambilan (capture) grafik dari eksekusi stream
- Update grafik dan node eksekusi kondisional
- Mengurangi latensi peluncuran untuk beban kerja iteratif
Pola Integrasi untuk Aplikasi yang Sudah Ada
- Membungkus kode GPU di balik antarmuka C++
- Mengelola sistem multi-GPU dan NUMA
- Integrasi build system dengan CMake dan CUDA
- Debugging kode perangkat dengan cuda-gdb
Ringkasan dan Praktik Terbaik
- Memilih antara Thrust, CUB, dan kernel kustom
- Portabilitas kinerja melintasi arsitektur GPU
- Penyelenggaraan kode dan RAII untuk sumber daya CUDA
- Langkah selanjutnya dan jalur pembelajaran CUDA lanjutan
Persyaratan
- Kompetensi dasar C++ termasuk ekspresi lambda, template, dan STL
- Kepahaman terhadap algoritma standar, container, dan iterator
- Kenyamanan dengan loop, kondisi (conditionals), dan fungsi
- Tidak memerlukan pengetahuan sebelumnya tentang CUDA atau pemrograman GPU
Audience
- Developer C++ yang berupaya mempercepat aplikasi intensif komputasi dengan GPU
- Insinyur perangkat lunak yang beralih dari pemrograman paralel eksklusif CPU ke pemrograman paralel heterogen
- Insinyur kinerja dan developer kuantitatif yang bekerja dengan dataset berskala besar
Testimoni (3)
Penjelasan yang mendetail, pengulangan poin-poin dengan cara yang halus namun efektif dalam menyampaikan pengetahuan. Kepedulian Rod untuk memeriksa kembali pertanyaan-pertanyaan yang agak obskur yang kami ajukan, untuk memastikan bahwa jawabannya 100% benar. Selain itu, minatnya dalam mendiskusikan kelebihan dan kekurangan gaya pemrograman alternatif sehingga kami tidak hanya belajar cara menggunakan C++ sesuai dengan tujuan kami, tetapi juga mengapa harus dilakukan demikian.
Nick Dillon - cellxica Ltd
Kursus - Using C++ in Embedded Systems - Applying C++11/C++14
Diterjemahkan Mesin
Pengalaman berbagi, pengetahuan dan pengalaman berharga dari guru.
Carey Fan - Logitech
Kursus - C/C++ Secure Coding
Diterjemahkan Mesin
Kehadiran online-nya berarti kami bisa menghemat banyak waktu. Sangat dihargai. Selain itu, fakta bahwa pelatih menguasai baik C# maupun Cpp sangat membantu karena dia dapat menjelaskan segalanya melalui pengetahuan yang sudah kami miliki.
Gabor - Rheinmetall Electronics Hungary Kft
Kursus - Advanced C++
Diterjemahkan Mesin