CUDA 编程指南是 NVIDIA 提供的关于 CUDA 技术编程的官方文档。CUDA 是一种用于通用计算的并行计算平台和编程模型,它允许开发者利用 NVIDIA 的 GPU 进行高性能计算。

快速导航

简介

CUDA 是 NVIDIA 提供的一种并行计算平台和编程模型,它允许开发者利用 NVIDIA 的 GPU 进行高性能计算。CUDA 编程模型基于线程并行处理,它将计算任务分解成多个线程,然后并行执行这些线程。

CUDA 线程类型

  • 计算线程:执行计算任务的线程。
  • 管理线程:负责协调和管理计算线程的线程。

安装 CUDA Toolkit

在开始 CUDA 编程之前,需要安装 CUDA Toolkit。CUDA Toolkit 包含了 CUDA 编译器、驱动程序和其他必要的工具。

sudo apt-get install cuda

CUDA 程序结构

CUDA 程序由主机代码和设备代码组成。主机代码运行在 CPU 上,而设备代码运行在 GPU 上。

#include <stdio.h>

__global__ void add(int *a, int *b, int *c) {
    *c = *a + *b;
}

int main() {
    int a = 2;
    int b = 3;
    int c = 0;

    int *d_a;
    int *d_b;
    int *d_c;

    cudaMalloc((void **)&d_a, sizeof(int));
    cudaMalloc((void **)&d_b, sizeof(int));
    cudaMalloc((void **)&d_c, sizeof(int));

    cudaMemcpy(d_a, &a, sizeof(int), cudaMemcpyHostToDevice);
    cudaMemcpy(d_b, &b, sizeof(int), cudaMemcpyHostToDevice);

    add<<<1, 1>>>(d_a, d_b, d_c);

    cudaMemcpy(&c, d_c, sizeof(int), cudaMemcpyDeviceToHost);

    printf("Result: %d\n", c);

    cudaFree(d_a);
    cudaFree(d_b);
    cudaFree(d_c);

    return 0;
}

内存管理

CUDA 提供了多种内存管理方式,包括主机内存、设备内存和统一内存。

  • 主机内存:运行在 CPU 上的内存。
  • 设备内存:运行在 GPU 上的内存。
  • 统一内存:自动在主机和设备之间传输数据的内存。
int *d_a;
cudaMalloc((void **)&d_a, sizeof(int));

扩展阅读

更多关于 CUDA 编程的信息,请参阅以下链接:

CUDA 图标