threadIdx, blockIdx, blockDim
Wbudowane zmienne określające położenie wątku.
threadIdx, blockIdx, blockDim to bezpłatna lekcja CUDA Academy na CoddyKit. To lekcja 2 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.
Gdzie jestem?
Każdy wątek wykonuje ten sam kod, więc każdy musi zadać pytanie: który element danych należy do mnie? CUDA odpowiada za pomocą wbudowanych zmiennych. 📍
Poznaj threadIdx
Wewnątrz kernela threadIdx informuje wątek o jego pozycji w należącym do niego bloku. Pierwszy wątek w bloku ma wartość threadIdx.x równą 0.
int t = threadIdx.x;Poznaj blockIdx
Zmienna blockIdx informuje wątek, do którego bloku należy on w obrębie siatki. Numerowanie bloków również zaczyna się od 0.
int b = blockIdx.x;Poznaj blockDim
Otrzymujesz także blockDim — liczbę wątków w bloku. Jeśli uruchomiono 256 wątków, wartość blockDim.x wynosi 256 dla każdego wątku.
int width = blockDim.x;Są ustawiane automatycznie
Nigdy nie ustawiasz tych zmiennych samodzielnie. CUDA wypełnia je dla każdego wątku w chwili uruchomienia kernela.
Pola .x, .y i .z
Każda z tych zmiennych ma pola x, y i z dla uruchomień 1D, 2D lub 3D. W przypadku prostych tablic zwykle używa się tylko pola x.
Łączenie ich
Samodzielnie threadIdx powtarza się w każdym bloku. Aby uzyskać unikalną pozycję, musisz połączyć blockIdx i blockDim z threadIdx.
Krótki przykład
Przy blockDim równym 4 wątek 2 w bloku 0 odpowiada elementowi 2, natomiast wątek 2 w bloku 1 — elementowi 6. Blok przesuwa punkt początkowy.
Pomocnicze dane tylko do odczytu
Te wbudowane elementy są wewnątrz kernela tylko do odczytu. Traktuj je jak zaufane współrzędne dokładnie opisujące położenie Twojego wątku.
Poznaj także gridDim
Jest jeszcze jeden pomocny element: gridDim przechowuje łączną liczbę bloków w siatce. Przydaje się, gdy iterujesz po większej liczbie danych niż liczba wątków.
int blocks = gridDim.x;Dlaczego to ważne
Te trzy zmienne są podstawą obliczania indeksu globalnego, dzięki któremu każdy wątek może przypisać sobie własny element.
Szybkie sprawdzenie
Wybierz zmienną, która wykonuje podane zadanie.
Podsumowanie: lokalizowanie wątku
Poznałeś wbudowane elementy: threadIdx określa pozycję w bloku, blockIdx — blok, a blockDim — rozmiar bloku. Razem precyzyjnie wskazują konkretny wątek. ✅
Ucz się C++ dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „threadIdx, blockIdx, blockDim” jest bezpłatna?
Tak — pełny tekst „threadIdx, blockIdx, blockDim” 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 „threadIdx, blockIdx, blockDim”?
Wbudowane zmienne określające położenie wątku. Ć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 2 z 4.
Ile czasu zajmuje lekcja „threadIdx, blockIdx, blockDim”?
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
- Hierarchia wątków
- threadIdx, blockIdx, blockDim
- Dlaczego istnieją bloki
- Dobór liczby wątków w bloku