Terima kasih telah mengirimkan pertanyaan Anda! Salah satu anggota tim kami akan segera menghubungi Anda.
Terima kasih telah mengirimkan pemesanan Anda! Salah satu anggota tim kami akan segera menghubungi Anda.
Durasi 28 jam
Kerangka Materi
Pengenalan
- Apa itu CUDA?/li>
- CUDA vs OpenCL vs SYCL
- Ikhtisar fitur dan arsitektur CUDA
- Menyiapkan Lingkungan Pengembangan
Memulai
- Membuat proyek CUDA baru menggunakan Visual Studio Code
- Mengeksplorasi struktur proyek dan file
- Mengompilasi dan menjalankan program
- Menampilkan output menggunakan printf dan fprintf
CUDA API
- Memahami peran CUDA API dalam program host
- Menggunakan CUDA API untuk menanyakan informasi dan kemampuan perangkat
- Menggunakan CUDA API untuk mengalokasikan dan membebaskan memori perangkat
- Menggunakan CUDA API untuk menyalin data antara host dan perangkat
- Menggunakan CUDA API untuk meluncurkan kernel dan menyinkronkan thread
- Menggunakan CUDA API untuk menangani kesalahan dan pengecualian
CUDA C/C++
- Memahami peran CUDA C/C++ dalam program perangkat
- Menggunakan CUDA C/C++ untuk menulis kernel yang dieksekusi pada GPU dan memanipulasi data
- Menggunakan tipe data, kualifikasi, operator, dan ekspresi CUDA C/C++
- Menggunakan fungsi bawaan CUDA C/C++, seperti matematika, atomik, warp, dll.
- Menggunakan variabel bawaan CUDA C/C++, seperti threadIdx, blockIdx, blockDim, dll.
- Menggunakan pustaka CUDA C/C++, seperti cuBLAS, cuFFT, cuRAND, dll.
Model Memori CUDA
- Memahami perbedaan antara model memori host dan perangkat
- Menggunakan ruang memori CUDA, seperti global, shared, constant, dan local
- Menggunakan objek memori CUDA, seperti pointer, array, tekstur, dan permukaan
- Menggunakan mode akses memori CUDA, seperti hanya-baca, hanya-tulis, baca-tulis, dll.
- Menggunakan model konsistensi memori CUDA dan mekanisme sinkronisasi
Model Eksekusi CUDA
- Memahami perbedaan antara model eksekusi host dan perangkat
- Menggunakan thread, blok, dan grid CUDA untuk mendefinisikan paralelisasi
- 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, kelompok kooperatif, dll.
Men-debug
- Memahami kesalahan umum dan bug dalam program CUDA
- Menggunakan debugger Visual Studio Code untuk memeriksa variabel, breakpoint, call stack, dll.
- Menggunakan CUDA-GDB untuk men-debug program CUDA di Linux
- Menggunakan CUDA-MEMCHECK untuk mendeteksi kesalahan dan kebocoran memori
- Menggunakan NVIDIA Nsight untuk men-debug dan menganalisis program CUDA di Windows
Optimasi
- Memahami faktor yang memengaruhi kinerja program CUDA
- Menggunakan teknik koalescens CUDA untuk meningkatkan throughput memori
- Menggunakan teknik pengekasaan (caching) dan prefetching CUDA untuk mengurangi latensi memori
- Menggunakan teknik memori bersama dan memori lokal CUDA untuk mengoptimalkan akses memori dan bandwidth
- Menggunakan profiling CUDA dan alat profiling untuk mengukur dan meningkatkan waktu eksekusi dan pemanfaatan sumber daya
Persyaratan
- Pemahaman tentang bahasa C/C++ dan konsep pemrograman paralel
- Pengetahuan dasar tentang arsitektur komputer dan hierarki memori
- Pengalaman dengan alat baris perintah dan editor kode
Audience
- Pengembang yang ingin belajar cara menggunakan CUDA untuk memprogram GPU NVIDIA dan memanfaatkan paralelisasi mereka
- Pengembang yang ingin menulis kode berkinerja tinggi dan dapat diskalakan yang dapat berjalan pada perangkat CUDA yang berbeda
- Programmer yang ingin menjelajahi aspek tingkat rendah dari pemrograman GPU dan mengoptimalkan kinerja kode mereka