Bizi tercih ettiğiniz için teşekkür ederiz. Ekip üyelerimiz en kısa sürede sizlerle iletişime geçecektir.
Rezervasyonunuzu gönderdiğiniz için teşekkür ederiz! Ekibimizden bir yetkili kısa süre içinde sizinle iletişime geçecektir.
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