Hubungi Kami
 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

Jumlah Peserta


Harga per Peserta

Kursus Mendatang

Kategori Terkait