Hubungi Kami
 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

Jumlah Peserta


Harga per Peserta

Kursus Mendatang

Kategori Terkait