Eğitim İçeriği

Giriş

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

Başlarken

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

CUDA API

  • CUDA API'nin ana programdaki rolünün anlaşılması
  • Cihaz bilgilerini ve yeteneklerini sorgulamak için CUDA API'yi kullanma
  • Cihaz belleğini ayırmak ve serbest bırakmak için CUDA API'yi kullanma
  • Verileri ana bilgisayar ve cihaz arasında kopyalamak için CUDA API'yi kullanma
  • Çekirdekleri başlatmak ve iş parçacıklarını senkronize etmek için CUDA API'yi kullanma
  • Hataları ve istisnaları işlemek için CUDA API'yi kullanma

CUDA C/C++

  • CUDA C/C++'nin cihaz programındaki rolünün anlaşılması
  • CUDA C/C++ kullanarak GPU üzerinde yürütülen ve verileri işleyen çekirdekler yazma
  • CUDA C/C++ veri türlerini, niteleyicilerini, operatörlerini ve ifadelerini kullanma
  • Matematik, atomik, warp vb. gibi CUDA C/C++ yerleşik fonksiyonlarını 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

  • Ana bilgisayar ve cihaz bellek modelleri arasındaki farkın anlaşılması
  • Global, paylaşılan, sabit ve yerel gibi CUDA bellek alanlarını kullanma
  • İşaretçiler, diziler, dokular ve yüzeyler gibi CUDA bellek nesnelerini kullanma
  • Salt okunur, salt yazılır, okuma-yazma vb. gibi CUDA bellek erişim modlarını kullanma
  • CUDA bellek tutarlılık modeli ve senkronizasyon mekanizmalarını kullanma

CUDA Yürütme Modeli

  • Ana bilgisayar ve cihaz yürütme modelleri arasındaki farkın anlaşılması
  • 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ığı fonksiyonlarını kullanma
  • __syncthreads, __threadfence_block vb. gibi CUDA blok fonksiyonlarını kullanma
  • gridDim, gridSync, işbirliği grupları vb. gibi CUDA ızgara fonksiyonlarını kullanma

Hata Ayıklama

  • CUDA programlarındaki yaygın hataların ve hataların anlaşılması
  • Değişkenleri, kesme noktalarını, çağrı yığınını vb. incelemek için Visual Studio Code hata ayıklayıcısını kullanma
  • Linux üzerinde CUDA programlarını hata ayıklamak için CUDA-GDB'yi kullanma
  • Bellek hatalarını ve sızıntılarını tespit etmek için CUDA-MEMCHECK'i 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örlerin anlaşılması
  • Bellek verimini iyileştirmek için CUDA birleştirme tekniklerini kullanma
  • Bellek gecikmesini azaltmak için CUDA önbellekleme ve ön getirme tekniklerini kullanma
  • Bellek erişimlerini ve bant genişliğini optimize etmek için CUDA paylaşılan belleğini ve yerel belleğini kullanma
  • Yürütme süresini ve kaynak kullanımını ölçmek ve iyileştirmek için CUDA profil oluşturmayı ve profil oluşturma araçlarını kullanma

Özet ve Sonraki Adımlar

Kurs İçin Gerekli Önbilgiler

  • C/C++ dili ve paralel programlama kavramlarına ilişkin anlayış
  • Bilgisayar mimarisi ve bellek hiyerarşisi konusunda temel bilgi
  • Komut satırı araçları ve kod düzenleyicileri ile deneyim

Hedef Kitle

  • CUDA'yı kullanarak NVIDIA GPU'leri programlamayı ve paralelliklerinden yararlanmayı öğrenmek isteyen geliştiriciler
  • Farklı CUDA cihazlarında çalışabilen yüksek performanslı ve ölçeklenebilir kod yazmak isteyen geliştiriciler
  • GPU programlamanın düşük seviyeli yönlerini keşfetmek ve kod performansını optimize etmek isteyen programcılar
 28 Saat

Katılımcı Sayısı


Kişi Başına Fiyat

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

Yaklaşan Etkinlikler

İlgili Kategoriler