CUDA笔记
cuda 内存管理
- cuda通过内存分配、数据传递、内存初始化、内存释放进行内存管理;
Standard C Function | CUDA C Function |
---|---|
malloc | cudaMalloc |
memcpy | cudaMemcpy |
memset | cudaMemset |
free | cudaFree |
内存分配
- 主机内存分配:extern void malloc(unsigned int num_bytes);
代码:floatfpHost_A;
fpHost_A = (float*)malloc(nBytes); - 设备内存分配:
代码: float fpDevice_A;
cudamalloc((float*)&fpDevice_A, nBytes); (能在主机中调用,也能在设备中调用)
注意:传入的地址是双重指针;
内存拷贝
- 主机数据拷贝:void * memcpy(void* dest, const void * src, size_t n);
memcpy((void*) d, (void*) s, nBytes); - 设备数据拷贝:
代码: cudaMemcpy(Device_A, Host_A, nBytes, cudaMemcpyHostToHost) (只能在主机中调用)