Bize Ulaşın
 Süre 28 Saat

Eğitim İçeriği

Giriş

  • CUDA nedir?
  • CUDA vs OpenCL vs SYCL
  • CUDA özellikleri ve mimarisi genel bakış
  • Geliştirme Ortamını Kurma

Başlangıç

  • Visual Studio Code ile yeni bir CUDA projesi oluşturma
  • Proje yapısını ve dosyalarını inceleme
  • Programı derleme ve çalışma
  • printf ve fprintf kullanarak çıktıyı görüntüleme

CUDA API

  • Konak (host) programında CUDA API'nin rolünü anlama
  • CUDA API'yi kullanarak cihaz bilgisi ve özelliklerini sorgulama
  • CUDA API'yi kullanarak cihaz belleği ayırma ve serbest bırakma
  • CUDA API'yi kullanarak konak ile cihaz arasındaki verileri kopyalama
  • CUDA API'yi kullanarak çekirdekleri başlatma ve iş parçacıklarını senkronize etme
  • CUDA API'yi kullanarak hataları ve istisnaları ele alma

CUDA C/C++

  • Cihaz programında CUDA C/C++'ın rolünü anlama
  • CUDA C/C++ ile GPU'da çalışan ve verileri manipüle eden çekirdekler yazma
  • CUDA C/C++ veri türlerini, belirleyicilerini (qualifiers), operatörlerini ve ifadelerini kullanma
  • Matematik, atomik işlemler, warp vb. gibi CUDA C/C++ yerleşik işlevlerini kullanma
  • threadIdx, blockIdx, blockDim vb. gibi CUDA C/C++ yerleşik değişkenlerini kullanma
  • cuBLAS, cuFFT, cuRAND vb. gibi CUDA C/C++ kütüphanelerini kullanma

CUDA Bellek Modeli

  • Konak ve cihaz bellek modelleri arasındaki farkı anlama
  • Global, paylaşımlı, sabit ve yerel gibi CUDA bellek alanlarını kullanma
  • İşaretçiler (pointers), diziler, dokular (textures) ve yüzeyler (surfaces) gibi CUDA bellek nesnelerini kullanma
  • Sadece okuma, sadece yazma, okuma-yazma gibi CUDA bellek erişim modlarını kullanma
  • CUDA bellek tutarlılık modelini ve senkronizasyon mekanizmalarını kullanma

CUDA Yürütme Modeli

  • Konak ve cihaz yürütme modelleri arasındaki farkı anlama
  • Paralelliği tanımlamak için CUDA iş parçacıklarını, bloklarını ve ızgaralarını kullanma
  • threadIdx, blockIdx, blockDim vb. gibi CUDA iş parçacığı işlevlerini kullanma
  • __syncthreads, __threadfence_block vb. gibi CUDA blok işlevlerini kullanma
  • gridDim, gridSync, cooperative groups vb. gibi CUDA ızgara işlevlerini kullanma

Hata Ayıklama

  • CUDA programlarındaki yaygın hataları ve hataları (bugs) anlama
  • Visual Studio Code hata ayıklayıcısını kullanarak değişkenleri, duraklama noktalarını ve çağrı yığınını denetleme
  • Linux'ta CUDA programlarını hata ayıklamak için CUDA-GDB kullanma
  • Bellek hatalarını ve sızıntılarını tespit etmek için CUDA-MEMCHECK kullanma
  • Windows'ta CUDA programlarını hata ayıklamak ve analiz etmek için NVIDIA Nsight kullanma

Optimizasyon

  • CUDA programlarının performansını etkileyen faktörleri anlama
  • Bellek bant genişliğini (throughput) iyileştirmek için CUDA birleştirme (coalescing) tekniklerini kullanma
  • Bellek gecikmesini azaltmak için CUDA önbelleğe alma ve önceden yükleme tekniklerini kullanma
  • Bellek erişimini ve bant genişliğini optimize etmek için CUDA paylaşımlı bellek ve yerel bellek tekniklerini kullanma
  • Yürütme süresini ve kaynak kullanımını ölçmek ve iyileştirmek için CUDA profil çıkarma ve profil çıkarma araçlarını kullanma

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 deneyimi

Hedef Kitle

  • NVIDIA GPU'larında programlama yapmayı ve bunların paralelliğini kullanmayı öğrenmek isteyen geliştiriciler
  • Farklı CUDA cihazlarında çalışabilecek yüksek performanslı ve ölçeklenebilir kod yazmak isteyen geliştiriciler
  • GPU programlamanın alt düzey (low-level) yönlerini keşfetmeyi ve kod performansını optimize etmeyi hedefleyen programcılar

Katılımcı Sayısı


Katılımcı başına fiyat

Yaklaşan Etkinlikler

İlgili Kategoriler