cudaMalloc函数说明
cudaError_t cudaMalloc(void** devPtr, size_t size);
参数说明
devPtr (输出参数): - 类型为
void**,即指向指针的指针。 - 函数执行成功后,
*devPtr 将被赋值为 GPU 内存的起始地址。 - 例如:若分配一个
float 数组,需传递 (void**)&d_array,其中 d_array 是设备端指针。
size (输入参数): - 类型为
size_t,表示需要分配的字节数。 - 例如:分配 10 个
float,则 size = 10 * sizeof(float)。
返回值
- 返回
cudaError_t 类型的错误码,用于检查操作是否成功。 - 成功时返回
cudaSuccess,失败时返回其他错误码(如 cudaErrorMemoryAllocation)。
核心功能
- 分配设备内存
在 GPU 的全局内存中分配指定大小的连续内存块。 - 返回设备指针
通过 devPtr 返回分配内存的地址,该指针仅在设备代码(如 CUDA 核函数)中有效。 - 内存对齐
分配的内存自动对齐,通常能满足硬件要求的高效访问。
总结
cudaMalloc 是管理 GPU 内存的核心函数,用于动态分配全局内存。- 必须通过设备指针访问 GPU 内存,主机代码需使用
cudaMemcpy 进行数据传输。 - 始终检查返回值,并在使用后及时调用
cudaFree 释放内存。