Bize Ulaşın
 Süre 28 Saat

Eğitim İçeriği

Giriş

  • OpenCL nedir?
  • OpenCL vs CUDA vs SYCL
  • OpenCL özelliklerinin ve mimarisinin genel bakışı
  • Geliştirme Ortamının Kurulması

Temellere Giriş

  • Visual Studio Code kullanarak yeni bir OpenCL projesi oluşturma
  • Proje yapısının ve dosyalarının keşfi
  • Programın derlenmesi ve çalıştırılması
  • printf ve fprintf kullanarak çıktının görüntülenmesi

OpenCL API'si

  • OpenCL API'sinin ana bilgisayar programındaki rolünün anlaşılması
  • Aygıt bilgilerini ve yeteneklerini sorgulamak için OpenCL API'sinin kullanılması
  • Bağlam (context), komut kuyrukları (command queue), tamponlar (buffer), çekirdekler (kernel) ve olaylar (event) oluşturmak için OpenCL API'sinin kullanılması
  • Okuma, yazma, kopyalama, eşleme (map), eşlemeyi kaldırma (unmap), yürütme ve bekleme gibi komutları sıraya koymak için OpenCL API'sinin kullanılması
  • Hataları ve istisnaları yönetmek için OpenCL API'sinin kullanılması

OpenCL C

  • OpenCL C'nin cihaz programındaki rolünün anlaşılması
  • Cihazda çalışan ve veri manipülasyonu yapan çekirdekler yazmak için OpenCL C'nin kullanılması
  • OpenCL C veri tipleri, sınırlayıcıları (qualifiers), operatörleri ve ifadelerinin kullanılması
  • Matematik, geometrik, ilişkisel vb. OpenCL C yerleşik fonksiyonlarının kullanılması
  • atomik, image, cl_khr_fp16 vb. OpenCL C uzantılarının ve kütüphanelerinin kullanılması

OpenCL Bellek Modeli

  • Host ve cihaz bellek modelleri arasındaki farkın anlaşılması
  • global, local, constant ve private gibi OpenCL bellek alanlarının kullanılması
  • buffer, image ve pipe gibi OpenCL bellek nesnelerinin kullanılması
  • Sadece okuma, sadece yazma, okuma-yazma gibi OpenCL bellek erişim modlarının kullanılması
  • OpenCL bellek tutarlılık modeli ve senkronizasyon mekanizmalarının kullanılması

OpenCL Çalışma Modeli

  • Host ve cihaz çalışma modelleri arasındaki farkın anlaşılması
  • Paralellik tanımını yapmak için OpenCL work-item'ları, work-group'ları ve ND-range'larının kullanılması
  • get_global_id, get_local_id, get_group_id vb. OpenCL work-item fonksiyonlarının kullanılması
  • barrier, work_group_reduce, work_group_scan vb. OpenCL work-group fonksiyonlarının kullanılması
  • get_num_groups, get_global_size, get_local_size vb. OpenCL cihaz fonksiyonlarının kullanılması

Hata Ayıklama (Debugging)

  • OpenCL programlarındaki yaygın hataların ve hata kaynaklarının (bugs) anlaşılması
  • Değişkenleri, kırılma noktalarını (breakpoints) ve çağrı yığınını (call stack) incelemek için Visual Studio Code hata ayıklayıcısının kullanılması
  • AMD cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için CodeXL'in kullanılması
  • Intel cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için Intel VTune'un kullanılması
  • NVIDIA cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için NVIDIA Nsight'ın kullanılması

Optimizasyon

  • OpenCL programlarının performansını etkileyen faktörlerin anlaşılması
  • Aritmetik verimliliğini artırmak için OpenCL vektör veri tipleri ve vektörleme tekniklerinin kullanılması
  • Kontrol maliyetini azaltmak ve yerelliği (locality) artırmak için OpenCL döngü açma (loop unrolling) ve döngü karosu (loop tiling) tekniklerinin kullanılması
  • Bellek erişimini ve bant genişliğini optimize etmek için OpenCL yerel belleği ve yerel bellek fonksiyonlarının kullanılması
  • Yürütme süresini ve kaynak kullanımını ölçmek ve iyileştirmek için OpenCL profilleme ve profilleme araçlarının kullanılması

Kurs İçin Gerekli Önbilgiler

  • C/C++ dili ve paralel programlama kavramlarına hakimiyet
  • Bilgisayar mimarisi ve bellek hiyerarşisi hakkında temel bilgi
  • Komut satırı araçları ve kod editörleri konusunda deneyim

Hedef Kitle

  • Heterojen cihazlarda programlamak ve paralel yapılarını kullanmak için OpenCL'in nasıl kullanılacağını öğ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 seviye yönlerini keşfetmek ve kod performansını optimize etmek isteyen programcılar

Katılımcı Sayısı


Katılımcı başına fiyat

Yaklaşan Etkinlikler

İlgili Kategoriler