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