CUDA Academy · Lekcja

cudaMalloc i cudaFree

Rezerwować i zwalniać pamięć globalną.

Lekcja 1 z 413 kroki

cudaMalloc i cudaFree to bezpłatna lekcja CUDA Academy na CoddyKit. To lekcja 1 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.

GPU ma własną pamięć RAM

GPU nie korzysta z głównej pamięci komputera. Ma oddzielną pulę nazywaną pamięcią globalną, z której jądra odczytują dane i do której je zapisują. 🧠

Trzeba o nią poprosić

Zanim jądro będzie mogło użyć pamięci urządzenia, trzeba samodzielnie zarezerwować jej fragment. Służy do tego funkcja cudaMalloc.

Sygnatura cudaMalloc

cudaMalloc przyjmuje adres wskaźnika oraz liczbę bajtów. Wpisuje do tego wskaźnika nowy adres w pamięci urządzenia.

float* d_data;
cudaMalloc(&d_data, n * sizeof(float));

Dlaczego wskaźnik do wskaźnika

Przekazujesz &d_data, aby cudaMalloc mogła zapisać nowy adres z powrotem do Twojej zmiennej. Wartość zwracana służy do przekazania kodu błędu.

Zawsze licz w bajtach

cudaMalloc operuje na surowych bajtach, a nie na elementach. Pomnóż liczbę elementów przez sizeof(type), aby bufor miał właściwy rozmiar.

cudaMalloc(&d_arr, count * sizeof(int));

Zwracanie pamięci za pomocą cudaFree

Gdy skończysz korzystać z bufora, zwróć go do GPU za pomocą cudaFree. Zwolni to pamięć globalną do innych zastosowań.

cudaFree(d_data);

Para jak zamek i klucz

Traktuj cudaMalloc i cudaFree jako parę. Każda alokacja powinna mieć dokładnie jedno odpowiadające jej zwolnienie.

Pamięć nie jest zainicjalizowana

Nowa pamięć przydzielona przez cudaMalloc zawiera przypadkowe wartości. Odczytanie jej przed zapisaniem lub skopiowaniem danych daje nieprzewidywalne wyniki.

Alokacja może się nie udać

Jeśli GPU nie ma wolnej pamięci, cudaMalloc zwraca błąd zamiast powodować awarię. W prawdziwym kodzie zawsze sprawdzaj ten kod zwrotny.

Pamięć globalna jest duża, ale wolna

Bufory przydzielone przez cudaMalloc znajdują się w pamięci globalnej: oferuje ona gigabajty przestrzeni, ale jest najwolniejszym poziomem pamięci układu. Korzystaj z niej swobodnie, lecz zwracaj uwagę na wzorce dostępu.

Rytm każdego programu

Niemal każdy program CUDA ma ten sam rytm: cudaMalloc, skopiowanie danych do urządzenia, uruchomienie jądra, skopiowanie wyników z powrotem, a następnie cudaFree.

Szybkie sprawdzenie

Sprawdźmy, w jaki sposób cudaMalloc otrzymuje docelowy wskaźnik.

Podsumowanie

Nauczyłeś się rezerwować pamięć GPU za pomocą cudaMalloc, podając jej rozmiar w bajtach, oraz zwalniać ją za pomocą cudaFree w dopasowanych parach. 🎉

Bezpłatny start

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 „cudaMalloc i cudaFree” jest bezpłatna?

Tak — pełny tekst „cudaMalloc i cudaFree” 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 „cudaMalloc i cudaFree”?

Rezerwować i zwalniać pamięć globalną. Ć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 1 z 4.

Ile czasu zajmuje lekcja „cudaMalloc i cudaFree”?

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. cudaMalloc i cudaFree
  2. Wskaźniki do pamięci GPU
  3. cudaMemset do inicjalizacji
  4. Unikanie wycieków i podwójnego zwalniania
← Powrót do CUDA Academy