Bize Ulaşın

Eğitim İçeriği

GPU ile Hızlandırılmış Hesaplamaya Giriş

  • Heterojen hesaplama ve CPU-GPU mimarisi
  • CUDA yürütme ve bellek uzayları
  • nvcc ve CMake ile CUDA C++ derleme
  • GPU geliştirme ortamının doğrulanması

Thrust ve CUB ile Paralel Algoritmalar

  • GPU ile hızlandırılan sıralama, indirme ve dönüştürme işlemleri
  • GPU yürütmesi için STL algoritmalarının yeniden yapılandırılması
  • Thrust cihaz vektörleri ve yürütme politikaları
  • Özel veri yolları için CUB cihaz genel ilkel fonksiyonları

GPU Bellek Mimarisi ve Yönetimi

  • Genel, sabit ve doku bellek türleri
  • Bilinçli cihaz belleği ayrımı ve aktarımları
  • Sadeleştirilmiş veri erişimi için Birleşik Bellek (Unified Memory)
  • Bellek birleştirme ve erişim desen optimizasyonları

CUDA Akışları ile Asenkron Yürütme

  • CUDA akışlarının oluşturulması ve yönetimi
  • Çekirdek yürütmeyi veri aktarımlarıyla örtüşdürme
  • Bağımlılık yönetimi için CUDA olayları (events)
  • Akış öncelikleri ve eşzamanlılık ayarlaması

Özel CUDA Çekirdekleri Yazma

  • SIMT programlama modeli ve iş parçacığı grubu (warp) yürütme
  • Çekirdek başlatma yapılandırması ve grid-şerit döngüleri
  • İş parçacığı indeksleme ve çok boyutlu grid yapıları
  • Hata yönetimi ve CUDA Runtime API kontrolleri

İş Parçacığı Hiyerarşisi ve Yürütme Modeli

  • Cihaz kodundaki gridler, bloklar ve iş parçacıkları
  • Warp seviyesi ilkel fonksiyonları ve oylama işlemleri
  • Blok seviyesi senkronizasyon ve engeller (barriers)
  • Yerleşim (occupancy) ve kaynak kullanım analizi

Esnek Paralellik için İşbirlikçi Gruplar (Cooperative Groups)

  • cooperative_groups API'si ve grup türleri
  • İş parçacığı bloku döşemeleri ve tiled_partition
  • Grid seviyesi işbirlikçi başlatmalar
  • Çoklu-grid senkronizasyon kalıpları

Paylaşılan Bellek Optimizasyon Teknikleri

  • Paylaşılan bellek bankaları ve banka çakışmalarının önlenmesi
  • Matris işlemleri için döşeme (tiling) stratejileri
  • Kullanıcı tarafından yönetilen önbellek olarak paylaşılan bellek
  • Çok boyutlu görünümler için cuda::shared_memory_mdspan kullanımı

Çekirdek Füzyonu ve Gelişmiş Paralel Kalıplar

  • Yaklaşık yükleme süresini azaltmak için birden fazla çekirdeğin birleştirilmesi (fusing)
  • Tarama, anahtara göre indirme ve segmentli algoritmalar
  • Atonik işlemler ve kilit içermeyen veri yapıları
  • Verimlilik için wapr-ağırlıklı atomik işlemler

Nsight Systems ile Profil Çıkarma ve Optimizasyon

  • CPU ve GPU etkinliğinin zaman çizelgesi analizi
  • Bellek aktarım darboğazlarının belirlenmesi
  • Çekirdek performansı ve yerleşim (occupancy) profil çıkarma
  • Nsight Compute ile iteratif optimizasyon

CUDA Cihaz Kodunda Modern C++ Özellikleri

  • Çekirdeklerde lambda ifadeleri, constexpr ve auto kullanımı
  • C++17 paralel algoritmalar ve yürütme politikaları
  • Cihaz üzerinde C++20 kavramları (concepts) ve aralıklar (ranges)
  • nvcc ve CCCL 3.x'te C++23 desteği

CUDA Grafikleri ve Gelişmiş Asenkronluk

  • CUDA grafiklerinin tanımlanması ve başlatılması
  • Akış yürütmelerinden grafik yakalama
  • Grafik güncelleme ve koşullu yürütme düğümleri
  • İteratif yüklemeler için başlatma gecikmesinin azaltılması

Mevcut Uygulamalar İçin Entegrasyon Kalıpları

  • C++ arayüzlerinin arkasına GPU kodunun sarmalanması
  • Çoklu GPU ve NUMA sistemlerinin yönetimi
  • CMake ve CUDA ile derleme sistemi entegrasyonu
  • cuda-gdb ile cihaz kodunun hata ayıklanması

Özet ve En İyi Uygulamalar

  • Thrust, CUB ve özel çekirdekler arasından seçim yapma
  • GPU mimarileri arasında performans taşınabilirliği
  • Kod düzenlemesi ve CUDA kaynakları için RAII kullanımı
  • Sonraki adımlar ve ileri düzey CUDA öğrenim yolları

Kurs İçin Gerekli Önbilgiler

  • Lambda ifadeleri, şablonlar ve STL dahil temel C++ yeterliliği
  • Standart algoritmalar, konteynerler ve yineleyiciler ile aşinalık
  • Döngüler, koşullu ifadeler ve işlevlerle konforlu düzeyde hakimiyet
  • Önceden CUDA veya GPU programlama bilgisi gerekmez

Hedef Kitle

  • Hesaplama yoğunluğundaki uygulamalarını GPU'lar ile hızlandırmak isteyen C++ geliştiricileri
  • Sadece CPU'dan çalıştırılan sistemlerden heterojen paralel programlamaya geçiş yapan yazılım mühendisleri
  • Büyük veri setleriyle çalışan performans mühendisleri ve nicel geliştiriciler
 8 Saatler

Katılımcı Sayısı


Katılımcı başına fiyat

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

Yaklaşan Etkinlikler

İlgili Kategoriler