Eğitim İçeriği

Giriş

  • GPU programlama nedir?
  • Neden GPU programlamasını kullanmalıyız?
  • GPU programlaması için sorunlar ve trade-off'ları nelerdir?
  • GPU programlama için frameworkler nelerdir?
  • Uygulamanıza uygun framework seçimi

OpenCL

  • OpenCL nedir?
  • OpenCL'nin avantajları ve dezavantajları nelerdir?
  • OpenCL için geliştirme ortamını ayarlama
  • Vektör toplama işlemi yapan temel bir OpenCL programı oluşturma
  • Cihaz bilgisi sorgulama, cihaz belleği tahsis etme ve tahsisi kaldırma, ana makine ile cihaz arasındaki veriyi kopyalama, çekirdekleri başlatma ve iş parçacıklarını senkronizasyonu yapmak için OpenCL API'sini kullanma
  • Ana makinede çalıştırılan ve veriyi işlemeyi sağlayan çekirdeklerin yazılması için OpenCL C dilini kullanma
  • Ortak görevler ve işlemleri gerçekleştirmek için OpenCL'nin dahili fonksiyonları, değişkenleri ve kütüphanelerini kullanma
  • Global, yerel, sabit ve özel gibi OpenCL bellek alanlarını kullanarak veri transferlerini ve bellek erişimlerini optimize etme
  • İş öğelerini, iş gruplarını ve ND aralıklarını tanımlayan paralellik kontrolü için OpenCL'nin yürütme modelini kullanma
  • CodeXL gibi araçlarla OpenCL programlarını hata ayıklama ve test etme
  • Birleştirme, önbelleğe alma, önceden yükleme ve profil oluşturma gibi teknikler kullanarak OpenCL programlarını optimize etme

CUDA

  • CUDA nedir?
  • CUDA'nın avantajları ve dezavantajları nelerdir?
  • CUDA için geliştirme ortamını ayarlama
  • Vektör toplama işlemi yapan temel bir CUDA programı oluşturma
  • Cihaz bilgisi sorgulama, cihaz belleği tahsis etme ve tahsisi kaldırma, ana makine ile cihaz arasındaki veriyi kopyalama, çekirdekleri başlatma ve iş parçacıklarını senkronizasyonu yapmak için CUDA API'sini kullanma
  • Ana makinede çalıştırılan ve veriyi işlemeyi sağlayan çekirdeklerin yazılması için CUDA C/C++ dilini kullanma
  • Ortak görevler ve işlemleri gerçekleştirmek için CUDA'nın dahili fonksiyonlarını, değişkenlerini ve kütüphanelerini kullanma
  • Global, paylaşılan, sabit ve yerel gibi CUDA bellek alanlarını kullanarak veri transferlerini ve bellek erişimlerini optimize etme
  • İş parçacıklarını, blokları ve gridleri tanımlayan paralellik kontrolü için CUDA'nın yürütme modelini kullanma
  • CUDA-GDB, CUDA-MEMCHECK ve NVIDIA Nsight gibi araçlarla CUDA programlarını hata ayıklama ve test etme
  • Birleştirme, önbelleğe alma, önceden yükleme ve profil oluşturma gibi teknikler kullanarak CUDA programlarını optimize etme

ROCm

  • ROCm nedir?
  • ROCm'nin avantajları ve dezavantajları nelerdir?
  • ROCm için geliştirme ortamını ayarlama
  • Vektör toplama işlemi yapan temel bir ROCm programı oluşturma
  • Cihaz bilgisi sorgulama, cihaz belleği tahsis etme ve tahsisi kaldırma, ana makine ile cihaz arasındaki veriyi kopyalama, çekirdekleri başlatma ve iş parçacıklarını senkronizasyonu yapmak için ROCm API'sini kullanma
  • Ana makinede çalıştırılan ve veriyi işlemeyi sağlayan çekirdeklerin yazılması için ROCm C/C++ dilini kullanma
  • Ortak görevler ve işlemleri gerçekleştirmek için ROCm'nın dahili fonksiyonlarını, değişkenlerini ve kütüphanelerini kullanma
  • Global, yerel, sabit ve özel gibi ROCm bellek alanlarını kullanarak veri transferlerini ve bellek erişimlerini optimize etme
  • İş parçacıklarını, blokları ve gridleri tanımlayan paralellik kontrolü için ROCm'nın yürütme modelini kullanma
  • ROCm Debugger ve ROCm Profiler gibi araçlarla ROCm programlarını hata ayıklama ve test etme
  • Birleştirme, önbelleğe alma, önceden yükleme ve profil oluşturma gibi teknikler kullanarak ROCm programlarını optimize etme

Karşılaştırma

  • OpenCL, CUDA ve ROCm'nin özelliklerini, performansını ve uyumluluğunu karşılaştırma
  • GPU programlarını benchmarcler ve metrikler kullanarak değerlendirme
  • GPU programlaması için en iyi uygulamaları ve ipuçlarını öğrenme
  • GPU programlamasının güncel ve gelecekteki trendleri ve zorluklarını keşfetme

Özeti ve Son Adımlar

Kurs İçin Gerekli Önbilgiler

  • C/C++ dili ve paralel programlama kavramları üzerine bilgi sahibi olmak
  • Bilgisayar mimarisi ve bellek hiyerarşısı konusundaki temel bilgiler
  • Komut satırı araçları ve kod düzenleyicilerle deneyim kazanmış olmak

Hedef Kitle

  • Farklı çerçeveleri kullanmayı öğrenmek ve özelliklerini, performansını ve uyumluluğunu karşılaştırmak isteyen geliştiriciler
  • Farklı platformlarda ve cihazlarda çalışabilen taşınabilir ve ölçeklenebilir kod yazmayı öğrenmek isteyen geliştiriciler
  • GPU programlaması ve optimizasyonu konusundaki maliyet-benefit analizi ve zorlukları keşfetmeyi öğrenmek isteyen programcılar
 28 Saat

Katılımcı Sayısı


Kişi Başına Fiyat

Yaklaşan Etkinlikler

İlgili Kategoriler