Birleştirilmiş ve Adımlı Okumalar
İş parçacığı-adres eşlemesinin neden önemli olduğunu öğrenin.
Birleştirilmiş ve Adımlı Okumalar, CoddyKit'te ücretsiz bir CUDA Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, CUDA Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. CUDA Academy kursu toplamda 4 dersten oluşur.
Her Şey Eşlemeyle İlgilidir
Birleştirme, her iş parçacığının hangi adrese eriştiğine bağlıdır. İş parçacığından adrese yapılan eşleme, tek bir işlemin tüm iş parçacığı grubuna hizmet edip edemeyeceğini belirler.
Birleştirilmiş Düzen
Komşu iş parçacıkları komşu adresleri okuduğunda iş parçacığı grubu tek ve bitişik bir aralığı kapsar. Bu düzenli yerleşim birleştirilmiş erişimdir.
int i = blockIdx.x * blockDim.x + threadIdx.x;
float v = data[i];Neden Kazandırır
İş parçacığı 0, 0 dizinindeki değeri; iş parçacığı 1, 1 dizinindeki değeri okur ve böyle devam eder. 32 adresin tümü tek bir hizalanmış satıra düşer; bu nedenle GPU'nun yalnızca bir işleme ihtiyacı vardır.
Adım Aralığına Giriş
Adım aralığı, art arda gelen iş parçacıklarının eriştiği adresler arasındaki sabit boşluktur. Bu boşluk tek bir öğeyi aştığı anda birleştirme bozulmaya başlar.
float v = data[i * stride];Adım Aralıklı Okumalar Yayılır
Adım aralığı 2 olduğunda iş parçacığı 0, 0'ı; iş parçacığı 1, 2'yi; iş parçacığı 2 ise 4'ü okur. İş parçacığı grubu artık belleğin iki katına yayılır ve daha fazla işleme ihtiyaç duyar.
Maliyet Artar
Adım aralığını iki katına çıkarmak, dokunulan satır sayısını yaklaşık iki katına çıkarır. Büyük adım aralıkları, her satırın yalnızca küçük bir bölümünü kullanırken iş parçacığı grubunu çok sayıda işleme yaklaştırabilir.
Yaygın Bir Tuzak
Satır öncelikli bir matrisin her sütununu bir iş parçacığına vermek çok büyük bir adım aralığı oluşturur. Kodda düzenli görünür, ancak her iş parçacığı grubunu fark ettirmeden dağıtır.
float v = matrix[threadIdx.x * width + row];Eşlemeyi Transpoze Etme
Çoğu zaman çözüm, hangi dizinin iş parçacığıyla en hızlı değiştiğini değiştirmektir. Ardışık iş parçacıklarının ardışık bellek konumlarında ilerlemesini sağlayın; okumalar yeniden birleşsin.
float v = matrix[row * width + threadIdx.x];Ofsetler de Zarar Verir
Birleştirilmiş bir düzen bile satırın ortasında başlarsa zarar görür. Hizalanmamış bir ofset, iş parçacığı grubunu sınırın ötesine kaydırarak tek okumayı ikiye böler.
İş Parçacığı Gruplarıyla Düşünün
Bir düzeni değerlendirirken tek bir iş parçacığını gözünüzde canlandırmayın. 32 hattın tümünü aynı anda düşünün ve adreslerinin birlikte kaç satırı kapsadığını sorun. 🔍
Pratik Kural
En hızlı değişen dizini threadIdx.x'i izleyecek şekilde düzenleyin. Bu tek alışkanlık, global okumalarınızın çoğunu ek bir çaba olmadan birleştirilmiş tutar.
Hızlı Kontrol
En iyi birleşen erişim düzenini seçin.
Özet
Birleştirilmiş okumaların komşuları bir arada tuttuğunu, adım aralığının ise onları satırlara dağıttığını gördünüz. En hızlı dizini threadIdx.x'in sürmesini sağlayın. 🎉
Sıkça Sorulan Sorular
“Birleştirilmiş ve Adımlı Okumalar” dersi ücretsiz mi?
Evet — “Birleştirilmiş ve Adımlı Okumalar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve CUDA Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. CUDA Academy kursu toplamda 4 dersten oluşur.
“Birleştirilmiş ve Adımlı Okumalar” dersinde ne öğreneceğim?
İş parçacığı-adres eşlemesinin neden önemli olduğunu öğrenin. CUDA Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
CUDA Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te CUDA Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Birleştirilmiş ve Adımlı Okumalar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu CUDA Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her CUDA Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bellek İşlemi Nedir
- Birleştirilmiş ve Adımlı Okumalar
- Dizi Yapısı ve Yapı Dizisi
- Etkin Bant Genişliğini Ölçün