cudaMalloc i cudaFree
Rezerwować i zwalniać pamięć globalną.
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. 🎉
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
- cudaMalloc i cudaFree
- Wskaźniki do pamięci GPU
- cudaMemset do inicjalizacji
- Unikanie wycieków i podwójnego zwalniania