C++ AMP 已被微软弃用,不建议新项目使用;CUDA 是目前最成熟、资料最丰富的 GPU 编程方案,但仅支持 NVIDIA 显卡,入门推荐从 CUDA 开始。

直接说结论:C++ AMP 已被微软弃用,不建议新项目使用;CUDA 是目前最成熟、资料最丰富的 GPU 编程方案,但仅支持 NVIDIA 显卡。入门推荐从 CUDA 开始。
CUDA 入门:装环境 + 写第一个核函数
第一步是装好 NVIDIA 驱动、CUDA Toolkit(官网下载安装包,选匹配驱动的版本),再配好编译器(如 Visual Studio 或 g++)。写代码时注意后缀用 .cu,不是 .cpp,因为 nvcc 编译器要识别 CUDA 语法。
- 用 __global__ 标记函数,表示这是在 GPU 上跑的核函数(kernel)
- 用 >> 语法启动核函数,比如
add>>(d_a, d_b, d_c);表示 1 个线程块、每块 4 个线程 - 每个线程通过 threadIdx.x 获取自己编号,用来处理数组对应位置
内存管理:GPU 和 CPU 不能直接共用内存
GPU 显存和 CPU 内存是分开的,必须显式拷贝数据。常见操作有:
- cudaMalloc 在 GPU 上分配显存(类似 malloc)
-
cudaMemcpy 在 host(CPU)和 device(GPU)之间复制数据,方向用
cudaMemcpyHostToDevice这类宏指定 - cudaFree 释放 GPU 显存
- 别忘了检查错误:调用
cudaGetLastError()或封装成宏,否则出错不报、结果不对很难排查
简单例子:两个数组相加
核心逻辑就三步:分配显存 → 拷贝输入到 GPU → 启动核函数 → 拷贝结果回 CPU。
立即学习“C++免费学习笔记(深入)”;
- 核函数里通常用
int idx = threadIdx.x;定位当前线程处理的下标 - 记得加边界判断(比如
if (idx ),避免越界——线程数可能比数组长度多 - 完整可运行的小例子网上很多,搜 “CUDA vector add example” 就能直接跑通
关于 C++ AMP:现在基本不用了
微软 2017 年起停止更新 C++ AMP,Visual Studio 2022 已移除相关支持。它语法更像 C++(比如用 array_view、parallel_for_each),但生态弱、文档少、不跨平台。除非维护老项目,否则跳过即可。
基本上就这些。CUDA 入门不复杂但容易忽略内存拷贝和错误检查,动手写两遍向量加法,再试试矩阵乘,节奏就稳了。











