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.
Eğitim İçeriği
Giriş
- OpenCL nedir?
- OpenCL, CUDA ve SYCL arasındaki farklar
- OpenCL özelliklerinin ve mimarisinin özeti
- Geliştirme Ortamını Ayarlama
Başlangıç
- Visual Studio Code kullanarak yeni bir OpenCL projesi oluşturma
- Proje yapısını ve dosyalarını inceleme
- Programı derlemek ve çalıştırmak
- printf ve fprintf kullanarak çıktıyı gösterme
OpenCL API
- Host programındaki OpenCL API rolünün anlaşılması
- Cihaz bilgilerini ve yeteneklerini sorgulamak için OpenCL API kullanma
- Bağlamlar, komut kuyrukları, arabellekler, çekirdekler ve olayları oluşturmak için OpenCL API kullanma
- Okuma, yazma, kopyalama, eşleme, eşlemeyi kaldırma, yürütme ve bekleme gibi komutları sıraya koymak için OpenCL API kullanma
- Hataları ve istisnaları yönetmek için OpenCL API kullanma
OpenCL C
- Cihaz programında OpenCL C rolünün anlaşılması
- Cihazda yürütülerek veriyi manipüle eden çekirdekler yazmak için OpenCL C kullanma
- OpenCL C veri türleri, belirleyiciler, operatörler ve ifadelerini kullanma
- Matematik, geometrik, ilişkisel gibi OpenCL C yerleşik fonksiyonlarını kullanma
- Atomic, image, cl_khr_fp16 gibi OpenCL C uzantıları ve kitaplıklarını kullanma
OpenCL Hafıza Modeli
- Konak ve cihaz hafıza modellerinin arasındaki farkın anlaşılması
- Global, yerel, sabit ve özel gibi OpenCL hafıza alanlarını kullanma
- Arabellekler, resimler ve kanallar gibi OpenCL hafıza nesnelerini kullanma
- Salt okuma, salt yazma, okuma-yazma gibi OpenCL hafıza erişim modlarını kullanma
- Hafıza tutarlılık modelini ve senkronizasyon mekanizmalarını kullanma
OpenCL Yürütme Modeli
- Konak ve cihaz yürütme modellerinin arasındaki farkın anlaşılması
- Paralellik tanımlamak için OpenCL çalışma öğelerini, çalışma gruplarını ve ND-aralıklarını kullanma
- get_global_id, get_local_id, get_group_id gibi OpenCL çalışma öğesi fonksiyonlarını kullanma
- barrier, work_group_reduce, work_group_scan gibi OpenCL çalışma grup fonksiyonlarını kullanma
- get_num_groups, get_global_size, get_local_size gibi OpenCL cihaz fonksiyonlarını kullanma
Hata Ayıklama
- OpenCL programlarındaki yaygın hatalar ve hatayı anlama
- Değişkenleri, kesme noktalarını, çağrı yığınını incelemek için Visual Studio Code hata ayıklayıcısını kullanma
- AMD cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için CodeXL kullanma
- Intel cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için Intel VTune kullanma
- NVIDIA cihazlarında OpenCL programlarını hata ayıklamak ve analiz etmek için NVIDIA Nsight kullanma
İyileştirme
- OpenCL programlarının performansını etkileyen faktörlerin anlaşılması
- Aritmetik kapasitesini artırmak için OpenCL vektör veri türleri ve vektörleştirme tekniklerini kullanma
- Kontrol yükünü azaltmak ve yerelleştirmeyi artırmak için OpenCL döngü açığa çıkarma ve döngü damgalama tekniklerini kullanma
- Hafıza erişimini ve bant genişliğini optimize etmek için OpenCL yerel hafızayı ve yerel hafıza fonksiyonlarını kullanma
- Yürütme süresini ve kaynak kullanımını ölçmek ve artırmak için OpenCL profil oluşturma ve profil oluşturma araçlarını kullanma
Özeti ve Sonraki Adımlar
Kurs İçin Gerekli Önbilgiler
- C/C++ dilini ve paralel programlama kavramlarını anlamak
- Bilgisayar mimarisine ve hafıza hiyerarşisine temel bilgi sahibi olmak
- Komut satırı araçları ve kod düzenleyicileriyle deneyim sahibi olmak
Hedef Kitle
- Heterojen cihazlarda program yazmayı ve paralellikten yararlanmayı öğrenmek isteyen yazılımcılar
- Farklı platformlar ve cihazlarda çalışabilen taşınabilir ve ölçeklenebilir kod yazmayı öğrenmek isteyen yazılımcılar
- Heterojen programlamada düşük seviye detayları keşfetmek ve kod performansını optimize etmek isteyen programcılar
28 Saat