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 OpenCL?
- Perbandingan antara OpenCL, CUDA, dan SYCL
- Gambaran umum mengenai fitur dan arsitektur OpenCL
- Pengaturan lingkungan pengembangan
Memulai Proyek OpenCL
- Membuat proyek OpenCL baru dengan bantuan Visual Studio Code
- Mengenal struktur folder dan berkas dalam proyek tersebut
- Mengkompilasi serta menjalankan program OpenCL
- Menampilkan hasil eksekusi menggunakan printf dan fprintf
API OpenCL
- Memahami peran API OpenCL dalam program host
- Menggunakan API OpenCL untuk mengakses informasi serta kemampuan perangkat
- Membuat konteks, antrean perintah, buffer, kernel, dan event lewat API OpenCL
- Memberikan instruksi ke perangkat dengan fungsi read, write, copy, map, unmap, execute, serta wait dalam API OpenCL
- Menangani kesalahan dan pengecualian yang muncul lewat API OpenCL
Bahasa Pemrograman OpenCL C
- Memahami peran bahasa OpenCL C dalam implementasi kode di perangkat
- Menulis kernel menggunakan OpenCL C yang dapat dijalankan di perangkat serta memanipulasi data
- Mengenal tipe data, kualifikator, operator, dan ekspresi dalam OpenCL C
- Memanfaatkan fungsi bawaan OpenCL C seperti matematika, geometri, serta relasi
- Menggunakan ekstensi dan library OpenCL C seperti atomic, image, serta cl_khr_fp16
Model Memori OpenCL
- Membedakan konsep memori host dengan model memori perangkat
- Mengaplikasikan ruang penyimpanan global, local, constant, dan private dalam OpenCL
- Memanfaatkan objek memori seperti buffer, image, dan pipe di OpenCL
- Menentukan mode akses memori seperti read-only, write-only, atau read-write dalam OpenCL
- Memahami model konsistensi data serta mekanisme sinkronisasi dalam OpenCL
Mekanisme Eksekusi OpenCL
- Mengenal perbedaan antara mekanisme eksekusi host dengan eksekusi di perangkat
- Mendefinisikan skema paralelisasi menggunakan work-item, work-group, serta ND-range dalam OpenCL
- Memanfaatkan fungsi seperti get_global_id, get_local_id, dan get_group_id untuk mengakses informasi mengenai work-item
- Menggunakan fungsi barrier, work_group_reduce, serta work_group_scan guna manajemen kerja di dalam work-group
- Mendapatkan parameter sistem perangkat melalui fungsi get_num_groups, get_global_size, dan get_local_size
Proses Debugging
- Mengidentifikasi kesalahan serta bug umum dalam program OpenCL
- Memeriksa variabel, menetapkan titik henti, serta melacak urutan pemanggilan fungsi lewat debugger Visual Studio Code
- Menganalisis dan mendebug program OpenCL pada perangkat AMD dengan menggunakan CodeXL
- Memperbaiki performa serta struktur kode lewat Intel VTune untuk perangkat Intel
- Menganalisis program OpenCL pada platform NVIDIA dengan alat NVIDIA Nsight
Teknik Optimisasi
- Memahami berbagai faktor yang memengaruhi performa program OpenCL
- Menerapkan tipe data vektor serta teknik vektorisasi untuk meningkatkan efisiensi perhitungan aritmetika
- Menggunakan strategi pembongkaran loop dan tileing loop guna mengurangi beban kontrol serta meningkatkan lokalitas data
- Memanfaatkan memori local serta fungsi khususnya untuk mengoptimalkan penggunaan bandwidth memori
- Menghitung dan memperbaiki durasi eksekusi serta efisiensi sumber daya melalui alat pembuat profil OpenCL
Penutup dan Arah Pengembangan Selanjutnya
Persyaratan
- Pemahaman dasar mengenai bahasa C/C++ serta konsep-konsep pemrograman paralel
- Pengetahuan awal terkait arsitektur komputer dan hierarki memori
- Pengalaman dalam menggunakan alat baris perintah serta editor kode
Target Peserta
- Para pengembang yang ingin mempelajari cara menggunakan OpenCL untuk memprogram perangkat heterogen serta memanfaatkan kemampuan paralelisasinya
- Pengembang yang berkeinginan membuat kode portabel dan dapat diskalakan agar mampu dijalankan pada berbagai platform serta perangkat
- Para programmer yang tertarik menjelajahi aspek teknis pemrograman heterogen sekaligus mengoptimalkan performa kode mereka
28 Jam