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.
Durasi 28 jam
Kerangka Materi
Pengenalan
- Apa itu OpenCL?
- OpenCL vs CUDA vs SYCL
- Ikhtisar fitur dan arsitektur OpenCL
- Menyiapkan Lingkungan Pengembangan
Mulai Membangun
- Membuat proyek OpenCL baru menggunakan Visual Studio Code
- Menjelajahi struktur proyek dan file
- Kompilasi dan menjalankan program
- Menampilkan output menggunakan printf dan fprintf
API OpenCL
- Memahami peran API OpenCL dalam program host
- Menggunakan API OpenCL untuk menanyakan informasi dan kapabilitas perangkat
- Menggunakan API OpenCL untuk membuat konteks, antrean perintah, buffer, kernel, dan event
- Menggunakan API OpenCL untuk mengantrikan perintah, seperti baca, tulis, salin, map, unmap, eksekusi, dan tunggu
- Menggunakan API OpenCL untuk menangani kesalahan dan pengecualian
OpenCL C
- Memahami peran OpenCL C dalam program perangkat
- Menggunakan OpenCL C untuk menulis kernel yang dieksekusi pada perangkat dan memanipulasi data
- Menggunakan tipe data, qualifier, operator, dan ekspresi OpenCL C
- Menggunakan fungsi bawaan OpenCL C, seperti matematika, geometri, relasional, dll.
- Menggunakan ekstensi dan pustaka OpenCL C, seperti atomic, image, cl_khr_fp16, dll.
Model Memori OpenCL
- Memahami perbedaan antara model memori host dan perangkat
- Menggunakan ruang memori OpenCL, seperti global, lokal, konstan, dan privat
- Menggunakan objek memori OpenCL, seperti buffer, gambar, dan pipa
- Menggunakan mode akses memori OpenCL, seperti read-only, write-only, read-write, dll.
- Menggunakan model konsistensi memori OpenCL dan mekanisme sinkronisasi
Model Eksekusi OpenCL
- Memahami perbedaan antara model eksekusi host dan perangkat
- Menggunakan work-items, work-groups, dan ND-ranges OpenCL untuk mendefinisikan paralelisasi
- Menggunakan fungsi work-item OpenCL, seperti get_global_id, get_local_id, get_group_id, dll.
- Menggunakan fungsi work-group OpenCL, seperti barrier, work_group_reduce, work_group_scan, dll.
- Menggunakan fungsi perangkat OpenCL, seperti get_num_groups, get_global_size, get_local_size, dll.
Pengujian Kesalahan
- Memahami kesalahan dan bug umum dalam program OpenCL
- Menggunakan debugger Visual Studio Code untuk memeriksa variabel, breakpoint, call stack, dll.
- Menggunakan CodeXL untuk mendebug dan menganalisis program OpenCL pada perangkat AMD
- Menggunakan Intel VTune untuk mendebug dan menganalisis program OpenCL pada perangkat Intel
- Menggunakan NVIDIA Nsight untuk mendebug dan menganalisis program OpenCL pada perangkat NVIDIA
Optimasi
- Memahami faktor-faktor yang memengaruhi kinerja program OpenCL
- Menggunakan tipe data vektor dan teknik vektorisasi OpenCL untuk meningkatkan throughput aritmetika
- Menggunakan teknik loop unrolling dan loop tiling OpenCL untuk mengurangi overhead kontrol dan meningkatkan lokalitas
- Menggunakan memori lokal dan fungsi memori lokal OpenCL untuk mengoptimalkan akses memori dan bandwidth
- Menggunakan profiling dan alat profiling OpenCL untuk mengukur dan meningkatkan waktu eksekusi dan utilisasi sumber daya
Persyaratan
- Pemahaman tentang bahasa C/C++ dan konsep pemrograman paralel
- Pengetahuan dasar tentang arsitektur komputer dan hierarki memori
- Pengalaman menggunakan alat baris perintah dan editor kode
Audience
- Pengembang yang ingin belajar cara menggunakan OpenCL untuk memprogram perangkat heterogen dan memanfaatkan paralelismenya
- Pengembang yang ingin menulis kode portabel dan skalabel yang dapat dijalankan di berbagai platform dan perangkat
- Programmer yang ingin menjelajahi aspek tingkat rendah dari pemrograman heterogen dan mengoptimalkan kinerja kode mereka