Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Course Outline
Pendahuluan
- Apa itu CUDA?
- CUDA vs OpenCL vs SYCL
- Ulasan fitur dan arsitektur CUDA
- Mengatur Lingkungan Pengembangan
Mulai Berkenalan
- Membuat proyek CUDA baru menggunakan Visual Studio Code
- Mengeksplorasi struktur dan file proyek
- Kompilasi dan menjalankan program
- Menampilkan output dengan printf dan fprintf
CUDA API
- Mengerti peran CUDA API dalam program host
- Menggunakan CUDA API untuk mengkueri informasi dan kemampuan perangkat
- Menggunakan CUDA API untuk alokasi dan dealokasi memori perangkat
- Menggunakan CUDA API untuk mentransfer data antara host dan perangkat
- Menggunakan CUDA API untuk meluncurkan kernel dan sinkronisasi thread
- Menggunakan CUDA API untuk menangani kesalahan dan pengecualian
CUDA C/C++
- Mengerti peran CUDA C/C++ dalam program perangkat
- Menggunakan CUDA C/C++ untuk menulis kernel yang dieksekusi di GPU dan memanipulasi data
- Menggunakan tipe data, kualifikasi, operator, dan ekspresi pada CUDA C/C++
- Menggunakan fungsi bawaan CUDA C/C++, seperti matematika, atomic, warp, dll.
- Menggunakan variabel bawaan CUDA C/C++, seperti threadIdx, blockIdx, blockDim, dll.
- Menggunakan perpustakaan CUDA C/C++, seperti cuBLAS, cuFFT, cuRAND, dll.
CUDA Model Memori
- Mengerti perbedaan antara model memori host dan device
- Menggunakan ruang-ruang memori CUDA, seperti global, shared, constant, dan local
- Menggunakan objek-objek memori CUDA, seperti pointer, array, tekstur, dan permukaan
- Menggunakan mode akses memori CUDA, seperti read-only, write-only, read-write, dll.
- Menggunakan model konsistensi memori CUDA dan mekanisme sinkronisasi
CUDA Model Eksekusi
- Mengerti perbedaan antara model eksekusi host dan device
- Menggunakan thread, blok, dan grid CUDA untuk mendefinisikan paralelisme
- Menggunakan fungsi thread CUDA, seperti threadIdx, blockIdx, blockDim, dll.
- Menggunakan fungsi blok CUDA, seperti __syncthreads, __threadfence_block, dll.
- Menggunakan fungsi grid CUDA, seperti gridDim, gridSync, grup kooperatif, dll.
Debugging
- Mengerti kesalahan dan bug umum dalam program CUDA
- Menggunakan debugger Visual Studio Code untuk memeriksa variabel, breakpoint, tumpukan panggilan, dll.
- Menggunakan CUDA-GDB untuk meng-debug program CUDA di Linux
- Menggunakan CUDA-MEMCHECK untuk mendeteksi kesalahan dan kebocoran memori
- Menggunakan NVIDIA Nsight untuk meng-debug dan menganalisis program CUDA di Windows
Optimasi
- Mengerti faktor-faktor yang mempengaruhi performa program CUDA
- Menggunakan teknik coalescing CUDA untuk meningkatkan throughput memori
- Menggunakan teknik caching dan prefetching CUDA untuk mengurangi latency memori
- Menggunakan teknik memori shared dan local CUDA untuk memaksimalkan akses memori dan bandwidth
- Menggunakan alat profiling CUDA untuk mengukur dan meningkatkan waktu eksekusi dan penggunaan sumber daya
Ringkasan dan Langkah Selanjutnya
Requirements
- Pemahaman tentang bahasa C/C++ dan konsep pemrograman paralel
- Kenalan dasar dengan arsitektur komputer dan hierarki memori
- Pengetahuan tentang alat baris perintah dan editor kode
Audience
- Pengembang yang ingin belajar bagaimana menggunakan CUDA untuk membuat program NVIDIA GPU dan memanfaatkan paralelismenya
- Pengembang yang ingin menulis kode berkinerja tinggi dan skalabel yang dapat dijalankan pada perangkat CUDA yang berbeda
- Programmer yang ingin menjelajahi aspek low-level dari pemrograman GPU dan mengoptimalkan kinerja kode mereka
28 Hours