Eğitim İçeriği

Giriş

  • OpenCL Nedir?
  • OpenCL, CUDA ve SYCL Karşılaştırması
  • OpenCL Özellikleri ve Mimarisinin Genel Bakışı
  • Geliştirme Ortamının Kurulumu

Başlangıç

  • Visual Studio Code Kullanarak Yeni Bir OpenCL Projesi Oluşturma
  • Proje Yapısının ve Dosyaların İncelenmesi
  • Programı Derleme ve Çalıştırma
  • printf ve fprintf Kullanarak Çıktıyı Görüntüleme

OpenCL API'si

  • Ana Programdaki OpenCL API'sinin Rolünün Anlaşılması
  • OpenCL API'sini Kullanarak Cihaz Bilgilerini ve Yeteneklerini Sorgulama
  • OpenCL API'sini Kullanarak Bağlamlar, Komut Kuyrukları, Tamponlar, Çekirdekler ve Olaylar Oluşturma
  • OpenCL API'sini Kullanarak Okuma, Yazma, Kopyalama, Eşleme, Eşlemeyi Kaldırma, Yürütme ve Bekleme Gibi Komutları Sıraya Alma
  • OpenCL API'sini Kullanarak Hataları ve İstisnaları Yönetme

OpenCL C

  • Cihaz Programındaki OpenCL C'nin Rolünün Anlaşılması
  • OpenCL C'yi Kullanarak Cihazda Yürütülen ve Verileri İşleyen Çekirdekler Yazma
  • OpenCL C Veri Türlerini, Niteliklerini, İşleçlerini ve İfadelerini Kullanma
  • OpenCL C Yerleşik Fonksiyonlarını, Örneğin Matematik, Geometrik, İlişkisel vb. Kullanma
  • OpenCL C Uzantılarını ve Kütüphanelerini, Örneğin Atomik, Görüntü, cl_khr_fp16 vb. Kullanma

OpenCL Bellek Modeli

  • Ana ve Cihaz Bellek Modelleri Arasındaki Farkın Anlaşılması
  • OpenCL Bellek Alanlarını Kullanma, Örneğin Global, Yerel, Sabit ve Özel
  • OpenCL Bellek Nesnelerini Kullanma, Örneğin Tamponlar, Görüntüler ve Kanallar
  • OpenCL Bellek Erişim Modlarını Kullanma, Örneğin Yalnızca Okuma, Yalnızca Yazma, Okuma-Yazma vb.
  • OpenCL Bellek Tutarlılık Modelini ve Senkronizasyon Mekanizmalarını Kullanma

OpenCL Yürütme Modeli

  • Ana ve Cihaz Yürütme Modelleri Arasındaki Farkın Anlaşılması
  • OpenCL İş Öğelerini, İş Gruplarını ve ND-Aralıklarını Kullanarak Paralelliği Tanımlama
  • OpenCL İş Öğesi Fonksiyonlarını Kullanma, Örneğin get_global_id, get_local_id, get_group_id vb.
  • OpenCL İş Grubu Fonksiyonlarını Kullanma, Örneğin barrier, work_group_reduce, work_group_scan vb.
  • OpenCL Cihaz Fonksiyonlarını Kullanma, Örneğin get_num_groups, get_global_size, get_local_size vb.

Hata Ayıklama

  • OpenCL Programlarındaki Yaygın Hataların ve Hataların Anlaşılması
  • Visual Studio Code Hata Ayıklayıcısını Kullanarak Değişkenleri, Kesme Noktalarını, Çağrı Yığınını vb. İnceleme
  • CodeXL'i AMD Cihazlarında OpenCL Programlarını Hata Ayıklamak ve Analiz Etmek İçin Kullanma
  • Intel VTune'u Intel Cihazlarında OpenCL Programlarını Hata Ayıklamak ve Analiz Etmek İçin Kullanma
  • NVIDIA Nsight'ı NVIDIA Cihazlarında OpenCL Programlarını Hata Ayıklamak ve Analiz Etmek İçin Kullanma

Optimizasyon

  • OpenCL Programlarının Performansını Etkileyen Faktörlerin Anlaşılması
  • OpenCL Vektör Veri Türlerini ve Vektörleştirme Tekniklerini Kullanarak Aritmetik Verimliliğini Artırma
  • OpenCL Döngü Açma ve Döngü Döşeme Tekniklerini Kullanarak Kontrol Yükünü Azaltma ve Yerelliği Artırma
  • OpenCL Yerel Belleği ve Yerel Bellek Fonksiyonlarını Kullanarak Bellek Erişimlerini ve Bant Genişliğini Optimize Etme
  • OpenCL Profil Oluşturma ve Profil Oluşturma Araçlarını Kullanarak Yürütme Süresini ve Kaynak Kullanımını Ölçme ve İyileştirme

Özet ve Sonraki Adımlar

Kurs İçin Gerekli Önbilgiler

  • C/C++ dili ve paralel programlama kavramlarına ilişkin anlayış
  • Bilgisayar mimarisi ve bellek hiyerarşisi hakkında temel bilgi
  • Komut satırı araçları ve kod düzenleyicileri ile deneyim

Hedef Kitle

  • OpenCL'yi kullanarak heterojen cihazları programlamayı ve paralelliklerinden yararlanmayı öğrenmek isteyen geliştiriciler
  • Farklı platformlarda ve cihazlarda çalışabilen taşınabilir ve ölçeklenebilir kod yazmak isteyen geliştiriciler
  • Heterojen programlamanın düşük seviyeli yönlerini keşfetmek ve kod performansını optimize etmek isteyen programcılar
 28 Saat

Katılımcı Sayısı


Kişi Başına Fiyat

Danışanlarımızın Yorumları (2)

Yaklaşan Etkinlikler

İlgili Kategoriler