CUDA 数据传输是指将数据从主机(CPU)传输到设备(GPU)以及从设备传输回主机的操作。以下是关于 CUDA 数据传输的一些基本概念和示例。
数据传输方式
- 内存拷贝:使用
cudaMemcpy
函数将数据从主机内存传输到设备内存,或者从设备内存传输回主机内存。 - 异步传输:使用
cudaMemcpyAsync
函数实现异步数据传输,可以与其他 GPU 操作并行执行。
示例代码
#include <iostream>
#include <cuda_runtime.h>
int main() {
// ... 初始化代码 ...
// 主机内存分配
float* h_data = new float[1024];
// 设备内存分配
float* d_data;
cudaMalloc((void**)&d_data, 1024 * sizeof(float));
// 主机到设备的内存拷贝
cudaMemcpy(d_data, h_data, 1024 * sizeof(float), cudaMemcpyHostToDevice);
// ... 执行 GPU 操作 ...
// 设备到主机的内存拷贝
cudaMemcpy(h_data, d_data, 1024 * sizeof(float), cudaMemcpyDeviceToHost);
// ... 清理代码 ...
return 0;
}
扩展阅读
更多关于 CUDA 数据传输的信息,请参阅以下链接:
CUDA 标志