本文将介绍如何在 CUDA 环境中进行数据传输。数据传输是 CUDA 程序中非常重要的一部分,它涉及到主机(CPU)和设备(GPU)之间的数据交换。
数据传输方式
在 CUDA 中,数据传输主要有以下几种方式:
- 内存复制:使用
cudaMemcpy
函数进行主机和设备之间的数据复制。 - 共享内存:使用 GPU 内部的共享内存进行主机和设备之间的数据传输。
- 流内存:使用 GPU 的流内存进行高速数据传输。
示例代码
以下是一个简单的示例代码,展示如何使用 cudaMemcpy
进行数据传输:
#include <iostream>
#include <cuda_runtime.h>
int main() {
const int N = 1024;
float *h_data = new float[N]; // 主机内存
float *d_data; // 设备内存
// 初始化数据
for (int i = 0; i < N; ++i) {
h_data[i] = static_cast<float>(i);
}
// 分配设备内存
cudaMalloc((void**)&d_data, N * sizeof(float));
// 数据传输
cudaMemcpy(d_data, h_data, N * sizeof(float), cudaMemcpyHostToDevice);
// 清理资源
delete[] h_data;
cudaFree(d_data);
return 0;
}
扩展阅读
如果您想了解更多关于 CUDA 数据传输的信息,可以参考以下链接:
CUDA 架构