1.动态全局内存分配与操作(CUDA C Programming Guide v12.3_10.34)
CUDA 内核中的 malloc()
函数从设备堆中分配至少 size
个字节,并返回一个指向已分配内存的指针,如果没有足够的内存来满足请求,则返回 NULL。
1.1堆内存分配
Device 内存堆具有固定大小,如果没有指定堆大小使用malloc() or __nv_aligned_device_malloc(), 则会分配默认8M的堆内存。通过以下API可以获取和设置堆内存大小。
cudaDeviceGetLimit(size_t* size, cudaLimitMallocHeapSize)
cudaDeviceSetLimit(cudaLimitMallocHeapSize, size_t size)
2.与主机内存间的互操性
malloc()-free() 和 cudamalloc()-cudafree()要配套使用。