Kembali ke Kursus
AI021 Professional

Panduan Pemrograman CUDA

Sumber resmi dan komprehensif bagi para pengembang untuk belajar model pemrograman CUDA dan bagaimana menulis kode dengan kinerja tinggi yang berjalan di GPU NVIDIA. Panduan ini mencakup arsitektur platform, antarmuka pemrograman, fitur perangkat keras lanjutan, serta spesifikasi teknis.

5.0
30.0h
1762 siswa
1 suka
Kecerdasan Buatan
Mulai Belajar

Gambaran Umum Kursus

📚 Ringkasan Konten

Sumber resmi dan komprehensif bagi para pengembang untuk belajar model pemrograman CUDA dan cara menulis kode berkinerja tinggi yang dijalankan pada GPU NVIDIA. Panduan ini mencakup arsitektur platform, antarmuka pemrograman, fitur perangkat keras lanjutan, serta spesifikasi teknis.

Kuasai seni komputasi paralel dengan panduan standar industri untuk NVIDIA CUDA.

Penulis: NVIDIA Corporation

Ucapan Terima Kasih: Hak Cipta © 2007–2024 NVIDIA Corporation & afiliasi. Seluruh hak dilindungi.

🎯 Tujuan Pembelajaran

  1. Mendefinisikan peran host (CPU) dan perangkat (GPU) dalam sistem heterogen.
  2. Menjelaskan model pemrograman SIMT dan organisasi hierarkis dari thread, blok, dan grid.
  3. Membedakan antara PTX (Parallel Thread Execution) dan kode biner (cubins), serta menjelaskan bagaimana kompilasi Just-in-Time (JIT) memfasilitasi kompatibilitas.
  4. Mengembangkan dan Mengompilasi Kernel CUDA: Tulis fungsi global, konfigurasikan eksekusi dengan notasi tiga tanda panah, dan kelola alur kerja kompilasi NVCC.
  5. Mengoptimalkan Memori dan Perpindahan Data: Bedakan antara model memori Unified, Eksplisit, dan Mapped, serta implementasikan memori host yang terkunci halaman untuk transfer yang efisien.
  6. Mengelola Eksekusi Paralel: Gunakan CUDA Streams, Events, dan Cooperative Groups untuk mengelola tugas asinkron dan sinkronisasi operasi CPU-GPU.
  7. Melakukan aritmetika pointer kompleks dan mengidentifikasi bottleneck arsitektur (von Neumann vs. Harvard).
  8. Menerapkan pola eksekusi CUDA lanjutan, termasuk Peluncuran Kernel Bergantung Secara Programatik dan Transfer Memori Batch Heterogen.
  9. Menggunakan fitur khusus perangkat keras seperti Thread Scopes, Proxy Asinkron, dan Pipa untuk memaksimalkan konkurensi.
  10. Mengonfigurasi dan menyesuaikan performa Unified Memory menggunakan prefetching, petunjuk penggunaan, serta manajemen ukuran halaman.

🔹 Pelajaran 1: Dasar-Dasar CUDA dan Tinjauan Arsitektur

Ringkasan: Pelajaran ini memperkenalkan platform komputasi paralel CUDA dan arsitektur perangkat keras di baliknya. Ini mengeksplorasi bagaimana sistem heterogen memanfaatkan CPU dan GPU, model pemrograman SIMT (Single Instruction, Multiple Threads), serta hierarki thread, blok, dan grid. Selain itu, membahas alur kompilasi CUDA, termasuk peran PTX, cubins, dan fatbins dalam memastikan kompatibilitas biner dan masa depan.

Hasil Pembelajaran:

  • Mendefinisikan peran host (CPU) dan perangkat (GPU) dalam sistem heterogen.
  • Menjelaskan model pemrograman SIMT dan organisasi hierarkis thread, blok, dan grid.
  • Membedakan antara PTX (Parallel Thread Execution) dan kode biner (cubins), serta menjelaskan bagaimana kompilasi Just-in-Time (JIT) memfasilitasi kompatibilitas.

🔹 Pelajaran 2: Pemrograman GPU Inti dan Manajemen Eksekusi

Ringkasan: Pelajaran ini membahas aspek-aspek dasar dan lanjutan pemrograman GPU menggunakan CUDA C++. Dari spesifikasi kernel dasar dan alur kerja kompilasi NVCC hingga topik manajemen eksekusi yang kompleks, termasuk desain kernel SIMT, konflik bank memori bersama, dan eksekusi asinkron menggunakan stream dan event. Siswa akan belajar menyeimbangkan model memori (Unified vs. Eksplisit) dan mengoptimalkan pemanfaatan perangkat keras untuk komputasi berkinerja tinggi.

Hasil Pembelajaran:

  • Mengembangkan dan Mengompilasi Kernel CUDA: Tulis fungsi global, konfigurasikan eksekusi dengan notasi tiga tanda panah, dan kelola alur kerja kompilasi NVCC.
  • Mengoptimalkan Memori dan Perpindahan Data: Bedakan antara model memori Unified, Eksplisit, dan Mapped, serta implementasikan memori host yang terkunci halaman untuk transfer yang efisien.
  • Mengelola Eksekusi Paralel: Gunakan CUDA Streams, Events, dan Cooperative Groups untuk mengelola tugas asinkron dan sinkronisasi operasi CPU-GPU.

🔹 Pelajaran 3: Logika Memori Lanjutan dan Sistem Multi-GPU

Ringkasan: Pelajaran ini menjelajahi transisi dari arsitektur memori dasar dan logika pointer ke teknik akselerasi GPU tingkat lanjut. Mencakup model eksekusi tingkat perangkat keras (SIMT, Independent Thread Scheduling), mekanisme sinkronisasi canggih (Asynchronous Barriers, Scoped Atomics), serta pengoorganisasian sistem multi-GPU menggunakan API Runtime dan Driver.

Hasil Pembelajaran:

  • Melakukan aritmetika pointer kompleks dan mengidentifikasi bottleneck arsitektur (von Neumann vs. Harvard).
  • Menerapkan pola eksekusi CUDA lanjutan, termasuk Peluncuran Kernel Bergantung Secara Programatik dan Transfer Memori Batch Heterogen.
  • Menggunakan fitur khusus perangkat keras seperti Thread Scopes, Proxy Asinkron, dan Pipa untuk memaksimalkan konkurensi.

🔹 Pelajaran 4: Optimasi, Graf, dan Akselerator Perangkat Keras

Ringkasan: Pelajaran ini membahas teknik pemrograman CUDA berkinerja tinggi, dengan fokus pada optimasi pergerakan data dan alur eksekusi. Menjelajahi transisi dari eksekusi berbasis stream ke CUDA Graph persisten, kendali granular Unified Memory melalui prefetching dan petunjuk, serta pemanfaatan akselerator perangkat keras khusus seperti Tensor Memory Accelerator (TMA) dan persistensi L2 Cache. Selain itu, menjelaskan pola sinkronisasi lanjutan, pembagian sumber daya melalui Green Contexts, serta interoperabilitas lintas-API untuk komputasi heterogen modern.

Hasil Pembelajaran:

  • Mengonfigurasi dan menyesuaikan performa Unified Memory menggunakan prefetching, petunjuk penggunaan, serta manajemen ukuran halaman.
  • Membuat, memperbarui, dan mengeksekusi CUDA Graph, termasuk penggunaan node memori dan peluncuran sisi perangkat.
  • Menerapkan sinkronisasi lanjutan menggunakan Asynchronous Barriers dan pola Producer-Consumer.

🔹 Pelajaran 5: Referensi Teknis dan Ekstensi Bahasa

Ringkasan: Pelajaran ini memberikan penyelidikan teknis mendalam tentang spesifikasi referensi model pemrograman CUDA dan ekstensi bahasa C++. Mencakup antarmuka perangkat keras-perangkat lunak melalui kemampuan komputasi, variabel lingkungan untuk kontrol runtime, serta persyaratan sintaks khusus untuk menulis kode perangkat berkinerja tinggi menggunakan standar C++ modern, cooperative groups, dan intrinsik perangkat keras khusus.

Hasil Pembelajaran:

  • Mengidentifikasi keterbatasan perangkat keras dan set fitur berdasarkan versi GPU Compute Capability.
  • Mengonfigurasi lingkungan eksekusi CUDA dan kompilasi JIT menggunakan variabel lingkungan tingkat sistem.
  • Menerapkan ekstensi bahasa C++ (annotasi, lambdas, dan templates) sambil tetap mematuhi batasan sisi perangkat.