本文将介绍如何在 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 架构