0Pricing
CUDA Academy · Lekcja

Dobór liczby wątków w bloku

Rozsądne wartości domyślne, takie jak 128 i 256.

Dobór liczby wątków w bloku to bezpłatna lekcja CUDA Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CUDA Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CUDA Academy zawiera 4 lekcji w sumie.

Rzeczywista decyzja

Podczas uruchamiania kernela musisz wybrać liczbę używanych wątków w bloku. Ten niewielki wybór ma rzeczywisty wpływ na wydajność. 🎚️

Wielokrotności liczby 32

GPU wykonuje wątki w grupach po 32, zwanych warpami, dlatego zawsze wybieraj wielokrotność liczby 32. Nietypowe rozmiary marnują część kanałów w niepełnym warp.

Bezpieczne wartości domyślne

Dobrymi pierwszymi wartościami są 128 lub 256 wątków na blok. Są wielokrotnościami liczby 32 i dobrze działają na niemal każdym GPU.

int threadsPerBlock = 256;

Twardy limit górny

Na obecnych GPU blok może zawierać najwyżej 1024 wątki. Jeśli zażądasz więcej, uruchomienie po prostu zakończy się błędem.

Za mało wątków

Bardzo małe bloki, na przykład złożone z 32 wątków, mogą pozostawić GPU niewykorzystane. Planista ma wtedy mniej warpów do ukrywania opóźnień pamięci.

Za dużo wątków

Duże bloki mogą wyczerpać rejestry lub pamięć współdzieloną, przez co na jednym multiprocesorze zmieści się mniej bloków. Większy rozmiar nie zawsze oznacza lepszy wynik.

Obliczanie liczby bloków

Po ustaleniu liczby wątków w bloku zaokrąglij liczbę bloków w górę, aby objąć każdy element, nawet jeśli liczba nie dzieli się bez reszty.

int blocks = (n + threadsPerBlock - 1) / threadsPerBlock;

Zawsze dodawaj sprawdzanie zakresu

Zaokrąglenie w górę oznacza, że istnieje kilka dodatkowych wątków. Zabezpiecz kernel instrukcją if, aby nie uzyskały dostępu do pamięci poza tablicą.

if (i < n) out[i] = a[i] + b[i];

Pozwól CUDA zasugerować rozmiar

Możesz automatycznie poprosić CUDA o dobry rozmiar bloku za pomocą pomocnika occupancy, a następnie dostroić konfigurację na podstawie jego sugestii.

cudaOccupancyMaxPotentialBlockSize(&grid, &block, kernel);

Mierz, nie zgaduj

Naprawdę najlepszy rozmiar zależy od kernela i GPU. Zacznij od 256, a następnie zmierz wydajność dla kilku wartości i zachowaj najszybszą.

Praktyczna zasada

W przypadku większości kernelów dla początkujących 256 wątków w bloku oraz zaokrąglona w górę liczba bloków to niezawodny i szybki punkt wyjścia.

Szybkie sprawdzenie

Wybierz najbardziej rozsądny wybór liczby wątków w bloku.

Podsumowanie: dobór rozmiaru bloków

Wiesz już, jak dobierać rozmiar bloków: używaj wielokrotności liczby 32, jako wartości domyślnej wybierz 256, nie przekraczaj 1024, zaokrąglaj liczbę bloków w górę i mierz wydajność. 🏁

Często zadawane pytania

Czy lekcja „Dobór liczby wątków w bloku” jest bezpłatna?

Tak — pełny tekst „Dobór liczby wątków w bloku” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CUDA Academy, przejdź na CoddyKit PRO. Kurs CUDA Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Dobór liczby wątków w bloku”?

Rozsądne wartości domyślne, takie jak 128 i 256. Ćwiczysz CUDA Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć CUDA Academy?

Nie wymagamy żadnego doświadczenia. CUDA Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Dobór liczby wątków w bloku”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji CUDA Academy?

Tak. Każda lekcja CUDA Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Hierarchia wątków
  2. threadIdx, blockIdx, blockDim
  3. Dlaczego istnieją bloki
  4. Dobór liczby wątków w bloku
← Powrót do CUDA Academy