Eğitim İçeriği

Giriş

  • OpenCL nedir?
  • OpenCL, CUDA ve SYCL arasındaki farklar
  • OpenCL özelliklerinin ve mimarisinin özeti
  • Geliştirme Ortamını Ayarlama

Başlangıç

  • Visual Studio Code kullanarak yeni bir OpenCL projesi oluşturma
  • Proje yapısını ve dosyalarını inceleme
  • Programı derlemek ve çalıştırmak
  • printf ve fprintf kullanarak çıktıyı gösterme

OpenCL API

  • Host programındaki OpenCL API rolünün anlaşılması
  • Cihaz bilgilerini ve yeteneklerini sorgulamak için OpenCL API kullanma
  • Bağlamlar, komut kuyrukları, arabellekler, çekirdekler ve olayları oluşturmak için OpenCL API kullanma
  • Okuma, yazma, kopyalama, eşleme, eşlemeyi kaldırma, yürütme ve bekleme gibi komutları sıraya koymak için OpenCL API kullanma
  • Hataları ve istisnaları yönetmek için OpenCL API kullanma

OpenCL C

  • Cihaz programında OpenCL C rolünün anlaşılması
  • Cihazda yürütülerek veriyi manipüle eden çekirdekler yazmak için OpenCL C kullanma
  • OpenCL C veri türleri, belirleyiciler, operatörler ve ifadelerini kullanma
  • Matematik, geometrik, ilişkisel gibi OpenCL C yerleşik fonksiyonlarını kullanma
  • Atomic, image, cl_khr_fp16 gibi OpenCL C uzantıları ve kitaplıklarını kullanma

OpenCL Hafıza Modeli

  • Konak ve cihaz hafıza modellerinin arasındaki farkın anlaşılması
  • Global, yerel, sabit ve özel gibi OpenCL hafıza alanlarını kullanma
  • Arabellekler, resimler ve kanallar gibi OpenCL hafıza nesnelerini kullanma
  • Salt okuma, salt yazma, okuma-yazma gibi OpenCL hafıza erişim modlarını kullanma
  • Hafıza tutarlılık modelini ve senkronizasyon mekanizmalarını kullanma

OpenCL Yürütme Modeli

  • Konak ve cihaz yürütme modellerinin arasındaki farkın anlaşılması
  • Paralellik tanımlamak için OpenCL çalışma öğelerini, çalışma gruplarını ve ND-aralıklarını kullanma
  • get_global_id, get_local_id, get_group_id gibi OpenCL çalışma öğesi fonksiyonlarını kullanma
  • barrier, work_group_reduce, work_group_scan gibi OpenCL çalışma grup fonksiyonlarını kullanma
  • get_num_groups, get_global_size, get_local_size gibi OpenCL cihaz fonksiyonlarını kullanma

Hata Ayıklama

  • OpenCL programlarındaki yaygın hatalar ve hatayı anlama
  • Değişkenleri, kesme noktalarını, çağrı yığınını incelemek için Visual Studio Code hata ayıklayıcısını kullanma
  • AMD cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için CodeXL kullanma
  • Intel cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için Intel VTune kullanma
  • NVIDIA cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için NVIDIA Nsight kullanma

İyileştirme

  • OpenCL programlarının performansını etkileyen faktörlerin anlaşılması
  • Aritmetik kapasitesini artırmak için OpenCL vektör veri türleri ve vektörleştirme tekniklerini kullanma
  • Kontrol yükünü azaltmak ve yerelleştirmeyi artırmak için OpenCL döngü açığa çıkarma ve döngü damgalama tekniklerini kullanma
  • Hafıza erişimini ve bant genişliğini optimize etmek için OpenCL yerel hafızayı ve yerel hafıza fonksiyonlarını kullanma
  • Yürütme süresini ve kaynak kullanımını ölçmek ve artırmak için OpenCL profil oluşturma ve profil oluşturma araçlarını kullanma

Özeti ve Sonraki Adımlar

Kurs İçin Gerekli Önbilgiler

  • C/C++ dilini ve paralel programlama kavramlarını anlamak
  • Bilgisayar mimarisine ve hafıza hiyerarşisine temel bilgi sahibi olmak
  • Komut satırı araçları ve kod düzenleyicileriyle deneyim sahibi olmak

Hedef Kitle

  • Heterojen cihazlarda program yazmayı ve paralellikten yararlanmayı öğrenmek isteyen yazılımcılar
  • Farklı platformlar ve cihazlarda çalışabilen taşınabilir ve ölçeklenebilir kod yazmayı öğrenmek isteyen yazılımcılar
  • Heterojen programlamada düşük seviye detayları keşfetmek ve kod performansını optimize etmek isteyen programcılar
 28 Saat

Katılımcı Sayısı


Kişi Başına Fiyat

Yaklaşan Etkinlikler

İlgili Kategoriler