Kerangka Materi
Pendahuluan Komputasi Tercepat Berbasis GPU
- Konsep komputasi heterogen serta arsitektur CPU-GPU
- Proses eksekusi dan tipe memori dalam CUDA
- Cara mengkompilasi kode CUDA C++ menggunakan nvcc maupun CMake
- Pengujian lingkungan pengembangan GPU yang benar
Algoritma Paralel dengan Thrust dan CUB
- Proses sortir, reduksi, dan transformasi secara paralel di GPU
- Cara merombak algoritma STL agar dapat dieksekusi pada GPU
- Vektor perangkat Thrust serta kebijakan eksekusinya
- Primitive CUB untuk mendukung pipelin komputasi kustom
Arsitektur serta Manajemen Memori GPU
- Tipe memori global, konstan, dan tekstur dalam GPU
- Metode alokasi memori perangkat secara manual serta transfer data terkait
- Penggunaan Memori Unifikasi untuk akses data yang lebih sederhana
- Optimisasi pola akses data agar selaras dengan sistem penyimpanan GPU
Eksekusi Asinkron Melalui Aliran CUDA
- Pembuatan serta manajemen aliran data (stream) CUDA
- Cara melakukan eksekusi kernel sekaligus mentransfer data secara simultan
- Manfaat Event CUDA dalam pengaturan ketergantungan operasi
- Pengaturan prioritas aliran serta penyetelan konkurensi secara efektif
Pembuatan Kernel CUDA Khusus
- Pahami model pemrograman SIMT dan mekanisme eksekusi warps
- Konfigurasi peluncuran kernel serta implementasi perulangan berdasarkan ukuran grid
- Pendefinisian indeks thread maupun pembentukan grid multidimensi
- Teknik penanganan kesalahan beserta verifikasi via API Runtime CUDA
Hierarki Thread serta Model Eksekusi GPU
- Definisi grid, blok, dan thread dalam kode perangkat
- Primitif tingkat Warps beserta operasi pemungutan suara (ballot)
- Teknik sinkronisasi antar blok serta pemanfaatan penghalang eksekusi
- Analisis tingkat pemanfaatan sumber daya dan kemampuan GPU dalam menangani sejumlah thread<
Kelompok Kolaboratif untuk Pola Paralel Fleksibel
- Pemahaman API cooperative_groups serta tipe-tipe kelompoknya
- Pembentukan bagian-bagian grid dan pembagian wilayah kerja secara tile-wise menggunakan tiled_partition
- Cara meluncurkan operasi paralel di tingkat grid sekaligus memicu koordinasi kelompoknya
- Pola sinkronisasi antar beberapa grid dalam satu urutan eksekusi<
Teknik Optimisasi Memori Bersama (Shared Memory)
- Analisis struktur bank memori bersama serta upaya menghindari konflik akses<
- Penerapan strategi tiling khusus dalam operasi matriks dengan memanfaatkan shared memory
- Mengoptimalkan pemanfaatan shared memory sebagai cache manajemen pengguna<
- Pemakaian alat cuda::shared_memory_mdspan untuk merepresentasikan data multidimensi dalam kernel<
Integrasi Kernel serta Pola Paralel Tingkat Lanjut
- Penggabungan beberapa kernel menjadi satu operasi demi menekan biaya peluncuran per komponen<
- Implementasi algoritma scan, reduksi berdasarkan kunci tertentu, serta operasi segmental lainnya<
- Pemanfaatan operasi atomik beserta struktur data tanpa penyegelan (lock-free) dalam komputasi intensif<
- Optimisasi throughput melalui mekanisme atomik berbasis Warps<
Profiling serta Optimisasi dengan Nsight Systems
- Pengamatan jadwal aktivitas CPU dan GPU lewat alat ini secara timeline-based<
- Pendeteksian titik kemacetan terkait proses transfer memori antar perangkat<
- Analisis performa kernel maupun tingkat efisiensi dalam penggunaan sumber daya GPU secara mendalam<
- Tahapan pemutakhiran algoritma bertahap melalui alat Nsight Compute<
Fleksibilitas Fitur C++ Modern dalam Kode Perangkat CUDA
- Pemanfaatan ekspresi lambda, kata kunci constexpr, serta tipe data otomatis dalam kernel<
- Aplikasi algoritma paralel modern versi C++17 beserta kebijakan eksekusinya<
- Integrasi konsep baru seperti ranges dan konsep di level bahasa versi C++20 untuk penggunaan GPU<
- Ketersediaan dukungan C++23 dalam alat nvcc maupun keluarga perangkat lunak CCCL 3.x<
Grafik CUDA serta Pola Eksekusi Asinkron Tingkat Lanjut
- Cara merancang dan meluncurkan grafik komputasi berbasis ekosistem CUDA<
- Rekaman aktivitas aliran data menjadi representasi grafis lewat fitur capture<
- Teknik pembaruan struktur grafis beserta pengaturan node yang dipicu kondisional<
- Pemanfaatan strategi ini untuk mengatasi keterlambatan peluncuran kernel dalam situasi komputasi iteratif<
Strategi Integrasi Teknologi GPU ke Aplikasi yang Sudah Ada
- Pembentukan antarmuka bahasa C++ untuk mengemas logika komputasi perangkat GPU<
- Cara menangani sistem multi-GPU dan konfigurasi NUMA secara efisien<
- Integrasi alat bantu pembuatan proyek menggunakan CMake serta CUDA <
- Pemanfaatan tool debugger cuda-gdb guna menganalisis kesalahan kode perangkat GPU<
Rangkuman dan Panduan Terbaik dalam Pengembangan Aplikasi GPU
- Pertimbangan memilih antara Thrust, CUB, atau pengembangan kernel secara mandiri<
- Cara mengejar portabilitas kinerja pada beragam arsitektur GPU<
- Strategi pembentukan struktur kode yang bersih dengan menerapkan prinsip RAII untuk objek sumber daya CUDA<
- Rekomendasi selanjutnya guna mengakses materi pembelajaran tingkat lanjut terkait ekosistem CUDA<
Persyaratan
- Pemahaman dasar tentang pemrograman C++, termasuk ekspresi lambda, template, serta STL
- Pengetahuan umum mengenai algoritma standar, kontainer, dan iterator
- Dapat membuat iterasi dengan perulangan, kondisi, serta fungsi secara mandiri
- Tak diperlukan pengetahuan awal soal CUDA maupun pemrograman GPU
Target Peserta
- Pengembang C++ yang ingin mempercepat aplikasi komputasi intensif lewat GPU
- Insinyur perangkat lunak yang beralih dari model pemrograman sepenuhnya berbasis CPU ke ekosistem paralel heterogen
- Insinyur kinerja sistem serta pengembang analisis data skala 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