Kerangka Materi

Pengantar

  • Apa itu OpenCL?
  • OpenCL vs CUDA vs SYCL
  • Ulasan tentang fitur dan arsitektur OpenCL
  • Mengatur Lingkungan Pengembangan

Memulai

  • Membuat proyek baru OpenCL menggunakan Visual Studio Code
  • Menjelajahi struktur dan berkas proyek
  • Kompilasi dan menjalankan program
  • Menampilkan output menggunakan printf dan fprintf

API OpenCL

  • Memahami peran API OpenCL dalam program host
  • Menggunakan API OpenCL untuk meminta informasi dan kemampuan device
  • Menggunakan API OpenCL untuk membuat konteks, antrian komando, buffer, kernel, dan acara
  • Menggunakan API OpenCL untuk mengeksekusi perintah seperti read, write, copy, map, unmap, execute, dan wait
  • Menggunakan API OpenCL untuk menangani kesalahan dan pengecualian

OpenCL C

  • Memahami peran OpenCL C dalam program device
  • Menggunakan OpenCL C untuk menulis kernel yang dieksekusi pada device dan memanipulasi data
  • Menggunakan tipe data, kualifikasi, operator, dan ekspresi OpenCL C
  • Menggunakan fungsi bawaan OpenCL C seperti matematika, geometri, relasional, dll.
  • Menggunakan ekstensi dan perpustakaan OpenCL C seperti atomic, image, cl_khr_fp16, dll.

Model Memori OpenCL

  • Memahami perbedaan antara model memori host dan device
  • Menggunakan ruang memori OpenCL seperti global, local, constant, dan private
  • Menggunakan objek memori OpenCL seperti buffer, image, dan pipe
  • Menggunakan mode akses memori OpenCL seperti read-only, write-only, read-write, dll.
  • Menggunakan model konsistensi memori dan mekanisme sinkronisasi OpenCL

Model Esekusi OpenCL

  • Memahami perbedaan antara model eksekusi host dan device
  • Menggunakan work-items, work-groups, dan ND-ranges untuk mendefinisikan paralelisme
  • 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 device OpenCL seperti get_num_groups, get_global_size, get_local_size, dll.

Debugging

  • 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 mempengaruhi kinerja program OpenCL
  • Menggunakan tipe data vektor dan teknik vectorization OpenCL untuk meningkatkan throughput aritmatika
  • Menggunakan teknik unrolling loop dan tiling loop OpenCL untuk mengurangi overhead kontrol dan menambah kekentalan data
  • Menggunakan memori lokal dan fungsi memori lokal OpenCL untuk memaksimalkan akses dan bandwidth memori
  • Menggunakan profiling dan alat profilling OpenCL untuk mengukur dan meningkatkan waktu eksekusi dan penggunaan sumber daya

Ringkasan dan Langkah Selanjutnya

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

Audience

  • Developer yang ingin belajar bagaimana menggunakan OpenCL untuk memprogram perangkat heterogen dan memanfaatkan paralelismenya
  • Developer yang ingin menulis kode yang dapat dipindahkan dan ditingkatkan skala, sehingga dapat berjalan di platform dan perangkat yang berbeda
  • Pengembang program yang ingin menjelajahi aspek rendah tingkat pemrograman heterogen dan mengoptimalkan kinerja kode mereka
 28 Jam

Jumlah Peserta


Biaya per Peserta

Kursus Mendatang

Kategori Terkait