Kerangka Materi

Pengenalan

  • Apakah itu pemrograman GPU?
  • Mengapa menggunakan pemrograman GPU?
  • Apa saja tantangan dan kompromi dalam pemrograman GPU?
  • Apa saja kerangka kerja dan alat-alat untuk pemrograman GPU?
  • Memilih kerangka kerja dan alat yang tepat untuk aplikasi Anda

OpenCL

  • Apakah itu OpenCL?
  • Apa saja kelebihan dan kekurangan OpenCL?
  • Menyiapkan lingkungan pengembangan untuk OpenCL
  • Membuat program OpenCL dasar yang melaksanakan penjumlahan vektor
  • Menggunakan API OpenCL untuk mengkueri informasi perangkat, mengalokasikan dan membebaskan memori perangkat, menyalin data antara host dan perangkat, meluncurkan kernel, dan menyinkronkan thread
  • Menggunakan bahasa OpenCL C untuk menulis kernel yang dieksekusi pada perangkat dan memanipulasi data
  • Menggunakan fungsi, variabel, dan library bawaan OpenCL untuk melaksanakan tugas dan operasi umum
  • Menggunakan ruang memori OpenCL, seperti global, lokal, konstanta, dan pribadi, untuk mengoptimalkan transfer data dan akses memori
  • Menggunakan model eksekusi OpenCL untuk mengontrol work-items, work-groups, dan ND-ranges yang mendefinisikan paralelisme
  • Membuat debug dan menguji program OpenCL menggunakan alat-alat seperti CodeXL
  • Mengoptimalkan program OpenCL menggunakan teknik seperti coalescing, caching, prefetching, dan profiling

CUDA

  • Apakah itu CUDA?
  • Apa saja kelebihan dan kekurangan CUDA?
  • Menyiapkan lingkungan pengembangan untuk CUDA
  • Membuat program CUDA dasar yang melaksanakan penjumlahan vektor
  • Menggunakan API CUDA untuk mengkueri informasi perangkat, mengalokasikan dan membebaskan memori perangkat, menyalin data antara host dan perangkat, meluncurkan kernel, dan menyinkronkan thread
  • Menggunakan bahasa CUDA C/C++ untuk menulis kernel yang dieksekusi pada perangkat dan memanipulasi data
  • Menggunakan fungsi, variabel, dan library bawaan CUDA untuk melaksanakan tugas dan operasi umum
  • Menggunakan ruang memori CUDA, seperti global, shared, konstanta, dan lokal, untuk mengoptimalkan transfer data dan akses memori
  • Menggunakan model eksekusi CUDA untuk mengontrol thread, blocks, dan grids yang mendefinisikan paralelisme
  • Membuat debug dan menguji program CUDA menggunakan alat-alat seperti CUDA-GDB, CUDA-MEMCHECK, dan NVIDIA Nsight
  • Mengoptimalkan program CUDA menggunakan teknik seperti coalescing, caching, prefetching, dan profiling

ROCm

  • Apakah itu ROCm?
  • Apa saja kelebihan dan kekurangan ROCm?
  • Menyiapkan lingkungan pengembangan untuk ROCm
  • Membuat program ROCm dasar yang melaksanakan penjumlahan vektor
  • Menggunakan API ROCm untuk mengkueri informasi perangkat, mengalokasikan dan membebaskan memori perangkat, menyalin data antara host dan perangkat, meluncurkan kernel, dan menyinkronkan thread
  • Menggunakan bahasa ROCm C/C++ untuk menulis kernel yang dieksekusi pada perangkat dan memanipulasi data
  • Menggunakan fungsi, variabel, dan library bawaan ROCm untuk melaksanakan tugas dan operasi umum
  • Menggunakan ruang memori ROCm, seperti global, lokal, konstanta, dan pribadi, untuk mengoptimalkan transfer data dan akses memori
  • Menggunakan model eksekusi ROCm untuk mengontrol thread, blocks, dan grids yang mendefinisikan paralelisme
  • Membuat debug dan menguji program ROCm menggunakan alat-alat seperti ROCm Debugger dan ROCm Profiler
  • Mengoptimalkan program ROCm menggunakan teknik seperti coalescing, caching, prefetching, dan profiling

HIP

  • Apakah itu HIP?
  • Apa saja kelebihan dan kekurangan HIP?
  • Menyiapkan lingkungan pengembangan untuk HIP
  • Membuat program HIP dasar yang melaksanakan penjumlahan vektor
  • Menggunakan bahasa HIP untuk menulis kernel yang dieksekusi pada perangkat dan memanipulasi data
  • Menggunakan fungsi, variabel, dan library bawaan HIP untuk melaksanakan tugas dan operasi umum
  • Menggunakan ruang memori HIP, seperti global, shared, konstanta, dan lokal, untuk mengoptimalkan transfer data dan akses memori
  • Menggunakan model eksekusi HIP untuk mengontrol thread, blocks, dan grids yang mendefinisikan paralelisme
  • Membuat debug dan menguji program HIP menggunakan alat-alat seperti ROCm Debugger dan ROCm Profiler
  • Mengoptimalkan program HIP menggunakan teknik seperti coalescing, caching, prefetching, dan profiling

Perbandingan

  • Membandingkan fitur, kinerja, dan kompatibilitas OpenCL, CUDA, ROCm, dan HIP
  • Menevaluasi program GPU menggunakan benchmark dan metrik
  • Belajar praktik terbaik dan tips untuk pemrograman GPU
  • Meng eksplorasi tren dan tantangan masa kini serta masa depan dalam pemrograman GPU

Ringkasan dan Langkah Selanjutnya

Persyaratan

  • Pengertian bahasa C/C++ dan konsep pemrograman paralel
  • Pengetahuan dasar tentang arsitektur komputer dan hierarki memori
  • Pengalaman dengan alat baris perintah dan editor kode

Publik Target

  • Pengembang yang ingin mempelajari dasar pemrograman GPU dan kerangka kerja serta alat utama untuk mengembangkan aplikasi GPU
  • Pengembang yang ingin menulis kode yang dapat dipindah dan skalabel yang dapat berjalan di berbagai platform dan perangkat
  • Programmer yang ingin mempelajari manfaat dan tantangan pemrograman dan optimasi GPU
 21 Jam

Jumlah Peserta


Biaya per Peserta

Kursus Mendatang

Kategori Terkait