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

Number of participants


Price per participant

Upcoming Courses (Minimal 5 peserta)

Related Categories