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 GPU programming?
- Mengapa menggunakan GPU programming?
- Apa tantangan dan trade-offs dari GPU programming?
- Apa framework yang tersedia untuk GPU programming?
- Memilih framework yang tepat untuk aplikasi Anda
OpenCL
- Apa itu OpenCL?
- Apa kelebihan dan kekurangan dari OpenCL?
- Mengatur lingkungan pengembangan untuk OpenCL
- Membuat program OpenCL dasar yang melakukan penjumlahan vektor
- Menggunakan API OpenCL untuk mengambil informasi perangkat, alokasikan dan dealokasikan memori perangkat, salin data antara host dan perangkat, luncurkan kernel, dan sinkronisasikan thread
- Menggunakan bahasa C OpenCL untuk menulis kernel yang dieksekusi di perangkat dan memanipulasi data
- Menggunakan fungsi bawaan, variabel, dan library dari OpenCL untuk melakukan tugas dan operasi umum
- Menggunakan ruang memori OpenCL, seperti global, local, constant, dan private, untuk mengoptimalkan transfer data dan akses memori
- Menggunakan model eksekusi OpenCL untuk mengontrol work-items, work-groups, dan ND-ranges yang mendefinisikan paralelisme
- Debugging dan pengujian program OpenCL menggunakan alat seperti CodeXL
- Optimasi program OpenCL dengan teknik seperti coalescing, caching, prefetching, dan profiling
CUDA
- Apa itu CUDA?
- Apa kelebihan dan kekurangan dari CUDA?
- Mengatur lingkungan pengembangan untuk CUDA
- Membuat program CUDA dasar yang melakukan penjumlahan vektor
- Menggunakan API CUDA untuk mengambil informasi perangkat, alokasikan dan dealokasikan memori perangkat, salin data antara host dan perangkat, luncurkan kernel, dan sinkronisasikan thread
- Menggunakan bahasa C/CUDA untuk menulis kernel yang dieksekusi di perangkat dan memanipulasi data
- Menggunakan fungsi bawaan, variabel, dan library CUDA untuk melakukan tugas dan operasi umum
- Menggunakan ruang memori CUDA, seperti global, shared, constant, dan local, untuk mengoptimalkan transfer data dan akses memori
- Menggunakan model eksekusi CUDA untuk mengontrol thread, blok, dan grid yang mendefinisikan paralelisme
- Debugging dan pengujian program CUDA menggunakan alat seperti CUDA-GDB, CUDA-MEMCHECK, dan NVIDIA Nsight
- Optimasi program CUDA dengan teknik seperti coalescing, caching, prefetching, dan profiling
ROCm
- Apa itu ROCm?
- Apa kelebihan dan kekurangan dari ROCm?
- Mengatur lingkungan pengembangan untuk ROCm
- Membuat program ROCm dasar yang melakukan penjumlahan vektor
- Menggunakan API ROCm untuk mengambil informasi perangkat, alokasikan dan dealokasikan memori perangkat, salin data antara host dan perangkat, luncurkan kernel, dan sinkronisasikan thread
- Menggunakan bahasa C/ROCm untuk menulis kernel yang dieksekusi di perangkat dan memanipulasi data
- Menggunakan fungsi bawaan, variabel, dan library ROCm untuk melakukan tugas dan operasi umum
- Menggunakan ruang memori ROCm, seperti global, local, constant, dan private, untuk mengoptimalkan transfer data dan akses memori
- Menggunakan model eksekusi ROCm untuk mengontrol thread, blok, dan grid yang mendefinisikan paralelisme
- Debugging dan pengujian program ROCm menggunakan alat seperti ROCm Debugger dan ROCm Profiler
- Optimasi program ROCm dengan teknik seperti coalescing, caching, prefetching, dan profiling
Perbandingan
- Membandingkan fitur, kinerja, dan kompatibilitas dari OpenCL, CUDA, dan ROCm
- Evaluasi program GPU menggunakan benchmark dan metrik
- Mempelajari best practices dan tips untuk programming GPU
- Menjelajahi tren dan tantangan saat ini serta masa depan dari programming GPU
Ringkasan dan Langkah Berikutnya
Persyaratan
- Pemahaman tentang bahasa C/C++ dan konsep pemrograman paralel
- Pengetahuan dasar tentang arsitektur komputer dan hierarki memori
- Pengalaman dengan alat baris perintah dan pengedit kode
Audiens
- Pembuat perangkat lunak yang ingin belajar bagaimana menggunakan kerangka kerja yang berbeda untuk pemrograman GPU dan membandingkan fitur, kinerja, dan kompatibilitasnya
- Pembuat perangkat lunak yang ingin menulis kode portabel dan dapat diperluas yang dapat dijalankan di berbagai platform dan perangkat
- Pengembang program yang ingin mengeksplorasi trade-offs dan tantangan dari pemrograman GPU dan optimisasi
28 Jam