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
释放内存。