0Pricing
CUDA Academy · Lekcja

Prefetching za pomocą cudaMemPrefetchAsync

Przenosić strony, zanim będą potrzebne.

Prefetching za pomocą cudaMemPrefetchAsync to bezpłatna lekcja CUDA Academy na CoddyKit. To lekcja 3 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.

Przestań płacić za błędy stron

Zamiast czekać na wolne błędy przy pierwszym dostępie, możesz przenieść strony wcześniej. cudaMemPrefetchAsync wysyła dane zarządzane do urządzenia, zanim kernel ich potrzebuje.

Podstawowe wywołanie

Podaje Pan/Pani wskaźnik, liczbę bajtów i urządzenie docelowe. To pojedyncze wywołanie prefetch z wyprzedzeniem migruje cały zakres w jednym wydajnym transferze.

cudaMemPrefetchAsync(data, n * sizeof(float), 0);

Wybór urządzenia docelowego

Trzeci argument to identyfikator device. Należy przekazać numer GPU, aby przygotować dane na tym GPU przed uruchomieniem kernela.

int dev = 0;
cudaMemPrefetchAsync(data, bytes, dev);

Prefetch z powrotem do CPU

Specjalnego identyfikatora cudaCpuDeviceId należy użyć, aby przenieść wyniki z powrotem do hosta. Trzeba zrobić to przed odczytaniem ich przez kod CPU, aby uniknąć serii błędów dostępu.

cudaMemPrefetchAsync(data, bytes, cudaCpuDeviceId);

Operacja asynchroniczna

Async w nazwie oznacza dokładnie to, co sugeruje: wywołanie natychmiast zwraca sterowanie i wykonuje się w stream. CPU może pracować dalej, gdy strony są migrowane w tle.

Nakładanie na obliczenia

Ponieważ prefetch działa w strumieniu, może nakładać się na działanie innych kerneli. Należy przygotować kolejny fragment, gdy bieżący jest jeszcze przetwarzany.

cudaMemPrefetchAsync(next, bytes, dev, stream);

Jeden transfer jest lepszy niż wiele błędów dostępu

Pojedynczy zbiorczy prefetch jest znacznie tańszy niż tysiące drobnych błędów dostępu. Rozproszone narzuty zostają zastąpione jednym ciągłym transferem o dużej przepustowości.

Prefetch właściwego zakresu

Należy przygotowywać tylko te dane, do których kernel rzeczywiście uzyskuje dostęp. Prefetch ogromnego bufora, z którego kernel prawie nie korzysta, jedynie marnuje przepustowość i pamięć GPU.

Schemat dwustronny

Wyłania się prosty rytm: prefetch do GPU, uruchomienie kernela, prefetch wyników z powrotem. Dzięki temu migracja po obu stronach nie znajduje się na ścieżce krytycznej.

Mierzyć, nie zgadywać

Należy dodać prefetch, a następnie sprawdzić w Nsight, czy liczba błędów dostępu się zmniejszyła, a przebiegi czasowe są bardziej zwarte. O skuteczności powinno decydować profilowanie, a nie intuicja.

Wygoda i kontrola

Prefetching zachowuje wygodę pojedynczego wskaźnika pamięci zarządzanej, a jednocześnie przywraca kontrolę nad czasem operacji. Otrzymuje się najlepsze cechy obu podejść.

Szybkie sprawdzenie

Sprawdźmy, jakie korzyści daje prefetching.

Podsumowanie: prefetching

Nauczył się Pan/Nauczyła się Pani przygotowywać strony z wyprzedzeniem za pomocą cudaMemPrefetchAsync, wybierając GPU lub cudaCpuDeviceId. Operacja nakłada się na pracę w strumieniach i jest lepsza niż obsługa błędów dostępu. Świetna praca! ✨

Często zadawane pytania

Czy lekcja „Prefetching za pomocą cudaMemPrefetchAsync” jest bezpłatna?

Tak — pełny tekst „Prefetching za pomocą cudaMemPrefetchAsync” 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 „Prefetching za pomocą cudaMemPrefetchAsync”?

Przenosić strony, zanim będą potrzebne. Ć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 3 z 4.

Ile czasu zajmuje lekcja „Prefetching za pomocą cudaMemPrefetchAsync”?

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. Jeden wskaźnik po obu stronach
  2. Migracja stron na żądanie
  3. Prefetching za pomocą cudaMemPrefetchAsync
  4. Wskazówki za pomocą cudaMemAdvise
← Powrót do CUDA Academy