Konfigurowanie części hosta
Przydzielać pamięć, kopiować, uruchamiać, kopiować z powrotem i zwalniać.
Konfigurowanie części hosta 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.
Host też ma zadanie
Kernel wykonuje obliczenia, ale procesor hosta przygotowuje wszystko. Jego zadania to alokacja, przesłanie danych, uruchomienie kernela, pobranie wyników i zwolnienie pamięci. 🧩
Dwa zestawy wskaźników
Dla tablic CPU przechowuje się wskaźniki hosta, a dla buforów GPU — oddzielne wskaźniki urządzenia. Często nadaje się im nazwy h_A i d_A.
float *h_A, *h_B, *h_C;
float *d_A, *d_B, *d_C;Wypełnij dane wejściowe na CPU
Najpierw należy przygotować dane w zwykłej pamięci hosta. W tym przykładzie wystarczy zainicjalizować h_A i h_B wartościami, które GPU później doda.
for (int i = 0; i < n; i++) {
h_A[i] = i; h_B[i] = 2 * i;
}Alokuj pamięć na urządzeniu
GPU potrzebuje własnych buforów, dlatego należy wywołać cudaMalloc dla każdej tablicy. Rozmiar podaje się w bajtach i oblicza jako iloczyn liczby elementów oraz sizeof(float).
size_t bytes = n * sizeof(float);
cudaMalloc(&d_A, bytes);Prześlij dane wejściowe
Tablice wejściowe należy przenieść do GPU za pomocą cudaMemcpy i kierunku HostToDevice. Kernel widzi tylko dane znajdujące się na urządzeniu.
cudaMemcpy(d_A, h_A, bytes, cudaMemcpyHostToDevice);
cudaMemcpy(d_B, h_B, bytes, cudaMemcpyHostToDevice);Ustal konfigurację uruchomienia
Należy wybrać liczbę wątków w bloku, a następnie obliczyć, ile bloków obejmie wszystkie elementy. Zaokrąglenie w górę gwarantuje, że każdy element otrzyma wątek.
int threads = 256;
int blocks = (n + threads - 1) / threads;Uruchom kernel
Teraz należy uruchomić kernel za pomocą składni potrójnych nawiasów kątowych, przekazując wskaźniki urządzenia. To wywołanie natychmiast zwraca sterowanie, podczas gdy GPU pracuje.
vecAdd<<<blocks, threads>>>(d_A, d_B, d_C, n);Pobierz wynik
Gdy kernel zakończy działanie, należy sprowadzić C z powrotem za pomocą cudaMemcpyDeviceToHost. To kopiowanie również czeka na zakończenie uruchomienia kernela.
cudaMemcpy(h_C, d_C, bytes, cudaMemcpyDeviceToHost);Zwolnij pamięć urządzenia
Pamięć GPU nie jest automatycznie zwalniana, dlatego każdy bufor należy zwolnić za pomocą cudaFree. Pominięcie tego kroku powoduje wyciek pamięci trwający do zakończenia procesu.
cudaFree(d_A); cudaFree(d_B); cudaFree(d_C);Kolejność jest święta
Zawsze należy zachować tę samą kolejność: alokacja, przesłanie danych, uruchomienie, pobranie wyników, zwolnienie pamięci. Zmiana kolejności sprawi, że kernel odczyta nieaktualne lub nieprawidłowe dane.
Kod hosta to zwykły C++
Warto zauważyć, że kod po stronie hosta to zwykły C++ oraz kilka wywołań cuda. Poza uruchomieniem kernela nie ma tu żadnej specjalnej magii kompilatora.
Szybkie sprawdzenie
Co musi się wydarzyć, zanim będzie można uruchomić kernel vecAdd?
Podsumowanie
Połączył Pan/Pani całą stronę hosta: dwa zestawy wskaźników, cudaMalloc, kopiowanie do urządzenia, uruchomienie, kopiowanie z powrotem i cudaFree. To standardowy kod obsługujący każde jądro. ✅
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 „Konfigurowanie części hosta” jest bezpłatna?
Tak — pełny tekst „Konfigurowanie części hosta” 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 „Konfigurowanie części hosta”?
Przydzielać pamięć, kopiować, uruchamiać, kopiować z powrotem i zwalniać. Ć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 „Konfigurowanie części hosta”?
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
- Kernel dodawania wektorów
- Konfigurowanie części hosta
- Weryfikowanie wyniku na CPU
- Pomiar pierwszego przyspieszenia