CUDA 数据传输是指将数据从主机(CPU)传输到设备(GPU)以及从设备传输回主机的操作。以下是关于 CUDA 数据传输的一些基本概念和示例。

数据传输方式

  1. 内存拷贝:使用 cudaMemcpy 函数将数据从主机内存传输到设备内存,或者从设备内存传输回主机内存。
  2. 异步传输:使用 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 标志