Tworzenie i używanie strumieni
Umieszczać niezależne zadania w kolejkach pracy.
Tworzenie i używanie strumieni 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.
Niezależne kolejki zadań
Strumień inny niż domyślny to własna kolejka zadań. Dwa strumienie działają niezależnie, więc GPU może jednocześnie wykonywać pracę w obu. 🧵
Uchwyt strumienia
Strumień jest reprezentowany przez uchwyt cudaStream_t. Tworzysz go raz, przekazujesz do wywołań, a po zakończeniu pracy niszczysz.
cudaStream_t stream;Tworzenie strumienia
Wywołaj cudaStreamCreate, aby utworzyć nowy strumień. Funkcja przydziela kolejkę, której sterownik używa do planowania pracy tego strumienia.
cudaStreamCreate(&stream);Uruchamianie kernela w strumieniu
Konfiguracja uruchomienia kernela ma czwarty argument: rozmiar pamięci współdzielonej, a następnie strumień. Przekaż swój strumień, aby umieścić w nim kernel.
kernel<<<grid, block, 0, stream>>>(d_data);Dwa strumienie, dwa zadania
Umieść jedno zadanie w streamA, a drugie w streamB. Jeśli nie ma między nimi zależności, GPU może wykonywać oba równocześnie.
kA<<<g, b, 0, streamA>>>(a);
kB<<<g, b, 0, streamB>>>(d);Asynchroniczność z natury
Wywołania związane ze strumieniami są asynchroniczne: host natychmiast odzyskuje sterowanie i działa dalej. GPU niezależnie przetwarza kolejkę we własnym tempie.
Oczekiwanie na jeden strumień
Użyj cudaStreamSynchronize, aby zablokować hosta do chwili zakończenia tylko tego strumienia, zamiast czekać na całe urządzenie.
cudaStreamSynchronize(stream);Sprawdzanie bez blokowania
Chcesz tylko sprawdzić stan? cudaStreamQuery zwraca cudaSuccess, jeśli strumień jest gotowy, oraz cudaErrorNotReady, jeśli nadal jest zajęty — bez zatrzymywania programu.
cudaStreamQuery(stream);Sprzątanie
Gdy strumień nie jest już potrzebny, zwolnij go za pomocą cudaStreamDestroy. Oczekująca praca nadal zostanie ukończona przed zwolnieniem uchwytu.
cudaStreamDestroy(stream);Strumienie nieblokujące
Utwórz strumień z flagą cudaStreamNonBlocking, aby nie synchronizował się niejawnie z historycznym strumieniem domyślnym.
cudaStreamCreateWithFlags(&s, cudaStreamNonBlocking);Więcej strumieni, większe nakładanie pracy
Rozdzielenie niezależnych fragmentów na kilka strumieni pozwala planistyce utrzymać zajętość jednostek. Po przekroczeniu kilku strumieni korzyści maleją, gdy sprzęt się nasyca.
Szybkie sprawdzenie
Jak umieścić kernel w określonym strumieniu?
Podsumowanie
Potrafisz już tworzyć strumienie, uruchamiać w nich kernele, synchronizować je lub sprawdzać ich stan, a także je niszczyć. Niezależne strumienie zapewniają rzeczywistą współbieżność. ✨
Często zadawane pytania
Czy lekcja „Tworzenie i używanie strumieni” jest bezpłatna?
Tak — pełny tekst „Tworzenie i używanie strumieni” 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 „Tworzenie i używanie strumieni”?
Umieszczać niezależne zadania w kolejkach pracy. Ć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 „Tworzenie i używanie strumieni”?
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
- Pułapka strumienia domyślnego
- Tworzenie i używanie strumieni
- Zdarzenia do pomiaru czasu i synchronizacji
- Nakładanie kopiowania i obliczeń