Hubungi Kami

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

Jumlah Peserta


Harga per Peserta

Kursus Mendatang

Kategori Terkait