Blok Sayısını Yukarı Yuvarlayın
Tam kapsama için (n + threads - 1) / threads.
Blok Sayısını Yukarı Yuvarlayın, CoddyKit'te ücretsiz bir CUDA Academy dersidir. Bu, 4 dersinin 3. 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.
Kaç Blok Gerekir
Blok başına iş parçığı sayısını belirledikten sonra, her dizi öğesine bir iş parçığı düşmesi için kaç blok başlatacağınıza karar vermelisiniz.
Normal Bölme Verileri Kaybettirir
Tamsayı bölmesi aşağı yuvarlar. 1000 öğe ve 256 iş parçığı olduğunda n / threads yalnızca 3 blok verir; bu bloklar 768 öğeyi kapsar ve geri kalanını kaybeder.
Yukarı Yuvarlamanız Gerekir
Sayı tam bölünmediğinde bir kısmi blok daha eklemelisiniz. Amaç taban bölmesi değil, tavan bölmesidir.
Yukarı Yuvarlama Yöntemi
Bölme işleminden önce iş parçığı sayısından bir eksiği ekleyin. Bu küçük ekleme, kayan nokta kullanmadan kalan varsa sonucu bir sonraki tam bloğa yükseltir.
int blocks = (n + threads - 1) / threads;Neden Çalışır
n tam bölünüyorsa, iş parçığı sayısından bir eksiği eklemek bölümü artırmaya yetmez. Kalan varsa sonuç bir blok daha artar.
Çözümlü Örnek
1000 öğe ve 256 iş parçığı için: 1000 artı 255, 1255 eder; 256'ya bölündüğünde sonuç 4'tür. Böylece 4 blokla tam kapsama elde edersiniz.
int blocks = (1000 + 256 - 1) / 256; // 4 blocksTam Bölünen Durum
512 öğe ve 256 iş parçığı için: 512 artı 255, 767 eder; 256'ya bölündüğünde sonuç 2'dir. Tam bölündüğünde boşa giden fazladan blok oluşmaz.
Biraz Fazla Başlatırsınız
Son blok genellikle yalnızca kısmen dolu olur; bu nedenle birkaç iş parçığının karşılık geldiği öğe yoktur. Sınır denetiminiz bunları ele aldığı için bu sorun değildir.
Başlatma İşlemine Eklemek
Blok sayısını hesaplayın, ardından işi tüm ızgaraya yaymak için her iki sayıyı da üçgen parantezler arasında aktarın.
int threads = 256;
int blocks = (n + threads - 1) / threads;
add<<<blocks, threads>>>(a, b, out, n);Koruma Koşuluyla Birlikte Kullanın
Yukarı yuvarlama ile if (i < n) denetimi birlikte çalışır. Biri tüm öğelerin kapsanmasını garanti eder, diğeri fazladan iş parçacıklarını güvenli tutar.
Küçük ve Yeniden Kullanılabilir Bir Yardımcı
Birçok proje bunu küçük bir işlevin içine alır; böylece yukarı yuvarlama mantığı tek bir yerde bulunur ve hiçbir zaman yanlış yazılmaz. ✨
inline int ceilDiv(int n, int d) { return (n + d - 1) / d; }Hızlı Denetim
Gerekli blokları sayın.
Özet
Izgaranın boyutunu (n + threads - 1) / threads ile belirlemeyi öğrendiniz. Bu tavan bölmesi yöntemi, sayı tam bölünmese bile her öğeyi kapsar. 🎯
Yapay zeka eğitmeniyle C++ öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Blok Sayısını Yukarı Yuvarlayın” dersi ücretsiz mi?
Evet — “Blok Sayısını Yukarı Yuvarlayın” 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.
“Blok Sayısını Yukarı Yuvarlayın” dersinde ne öğreneceğim?
Tam kapsama için (n + threads - 1) / threads. 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 3. dersidir.
“Blok Sayısını Yukarı Yuvarlayın” 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
- Klasik Dizin Formülü
- Aralık Dışına Çıkmaya Karşı Koruma
- Blok Sayısını Yukarı Yuvarlayın
- Izgara Adımlı Döngüler