Урок 6: Две отдельные памяти — host, device и cudaMalloc
До сих пор вы написали kernel, задали размер сетки и дали каждому thread его индекс. Но есть одна деталь, которой мы ещё не касались: где вообще находятся данные? У CPU (host) и GPU (device) есть две совершенно отдельные физические памяти. Указатель из malloc находится в памяти host, а указатель из
Host и device — как два офиса в разных городах. У каждого офиса свои картотечные шкафы, и вы не можете дотянуться до шкафа другого офиса издалека через окно. cudaMalloc — это аренда пустого шкафа в другом офисе (GPU), а cudaFree — его освобождение в конце. В следующем уроке мы узнаем, как пересылать документы по почте между двумя офисами.
- память host
- Память CPU. Указатель из malloc находится здесь, и код host может обращаться к нему напрямую.
- указатель device
- Указатель, возвращаемый cudaMalloc, который указывает в память GPU. Его нельзя читать напрямую в коде host.
- cudaMalloc
- Выделяет память на device и возвращает указатель device через свой аргумент. Как malloc, но память находится на GPU.
- cudaFree
- Освобождает память device, выделенную cudaMalloc. Аналог free для памяти host.