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.
Kerangka Materi
Pendahuluan
- Apa itu CUDA?
- CUDA dibandingkan dengan OpenCL dan SYCL
- Gambaran umum fitur dan arsitektur CUDA
- Mengatur Lingkungan Pengembangan
Pelajaran Dasar
- Membuat proyek CUDA baru dengan Visual Studio Code.
- Menjelajahi struktur proyek dan berbagai berkasnya.
- Mengkompilasi serta menjalankan program yang dibuat.
- Menampilkan hasil eksekusi lewat fungsi printf dan fprintf.
API CUDA
- Fungsi API CUDA dalam mekanisme host program.
- Penggunaan API CUDA untuk memperoleh informasi perangkat serta kapabilitasnya.
- Proses alokasi dan pelepasan memori perangkat menggunakan API CUDA.
- Mentransfer data antara host dan perangkat melalui API tersebut.
- Peluncuran kernel dan proses sinkronisasi thread diatur dengan API CUDA.
- Penanganan error serta pengecualian lewat fitur yang tersedia pada API CUDA.
Bahasa CUDA C/C++
- Paparan peran bahasa CUDA C/C++ dalam implementasi program yang berjalan di GPU.
- Pembuatan kernel menggunakan CUDA C/C++ untuk mengelola manipulasi data secara langsung di GPU.
- Penjelasan mengenai tipe data, modifier, operator, serta ekspresi dalam bahasa ini.
- Fungsi bawaan seperti fungsi matematika, operasi atomik, atau warp yang tersedia dalam CUDA C/C++.
- Penggunaan variabel bawaan seperti threadIdx, blockIdx, dan blockDim pada implementasi program.
- Integrasi pustaka umum seperti cuBLAS, cuFFT, maupun cuRAND ke dalam program.
Model Memori CUDA
- Perbedaan mendasar antara model memori host dan perangkat.
- Penerapan ruang memori spesifik seperti global, shared, constant, maupun local untuk optimisasi performa.
- Pemahaman mengenai objek memori seperti pointer, array, texture, serta surface dalam konteks CUDA.
- Konfigurasi modus akses memori: hanya baca, hanya tulis, atau keduanya sekaligus.
- Mengatur kekonsistenan data dan mekanisme sinkronisasi antar elemen memori GPU.
Model Eksekusi CUDA
- Pembedaan antara logika eksekusi host dan perangkat dalam konteks penggunaannya.
- Definisi serta struktur kerja thread, blok, dan grid sebagai unsur pembentuk proses paralelisasi GPU.
- Penerapan variabel fungsional seperti threadIdx maupun blockIdx untuk mengelola komponen tersebut.
- Pemanfaatan fungsi pada tingkat blok seperti __syncthreads dan __threadfence_block demi sinkronisasi data.
- Konteks pengaturan grid melalui parameter seperti gridDim, mekanisme koordinasi grup kerja (cooperative groups), serta cara menjalankannya.
Proses Debugging
- Pengenalan jenis error serta bug yang umum muncul dalam implementasi program CUDA.
- Pemanfaatan debugger Visual Studio Code untuk memeriksa nilai variabel, titik henti, serta struktur pemanggilan fungsi.
- Instruksi dasar penggunaan CUDA-GDB sebagai alat utama debug di lingkungan Linux.
- Pendeteksian kebocoran memori dan anomali sistem dengan CUDA-MEMCHECK.
- Analisis program GPU di Windows menggunakan NVIDIA Nsight.
Teknik Optimisasi
- Faktor-faktor kunci yang menentukan performa akhir program CUDA.
- Penerapan teknik coalescing guna meningkatkan kecepatan aliran memori ke dalam GPU.
- Optimasi latensi memori dengan menerapkan caching dan prefetching secara cermat.
- Mengelola ruang shared memory serta local memory demi efisiensi akses memori yang maksimal.
- Pemanfaatan alat profiling untuk mengukur waktu eksekusi dan penggunaan sumber daya perangkat secara presisi.
Penutup dan Langkah Selanjutnya
Persyaratan
- Pemahaman dasar mengenai bahasa pemrograman C/C++ serta konsep pemrograman paralel
- Pengetahuan dasar tentang arsitektur komputer dan struktur memori
- Pengalaman dalam menggunakan alat baris perintah maupun editor kode
Target Peserta
- Pengembang yang ingin menguasai penggunaan CUDA untuk pemrograman GPU NVIDIA serta memaksimalkan kemampuan paralelisasinya.
- Pengembang yang hendak menciptakan kode berkinerja tinggi dan skalabel yang dapat dijalankan pada berbagai perangkat dengan dukungan CUDA.
- Programmer yang tertarik mempelajari aspek mendalam pemrograman GPU serta cara mengoptimalkan kinerja program mereka.
28 Jam