CUDA Samples 上手指南:如何编译运行官方示例,并少走弯路
【免费下载链接】cuda-samplesSamples for CUDA Developers which demonstrates features in CUDA Toolkit项目地址: https://gitcode.com/GitHub_Trending/cu/cuda-samples
CUDA Samples 是 NVIDIA 官方维护的示例代码库,覆盖 CUDA Toolkit(CUDA 开发工具链,包含编译器 nvcc、运行时库和调试工具)里的各种特性。如果你想学 GPU 编程却不知道该写什么程序,或者需要快速确认某个 CUDA API 的用法,这个仓库是最直接的参考。编译成功后可以拿到约 180 个可运行的示例程序(README 测试输出示例),外加一套 Python 版示例。
它适合解决什么问题?
- 上手 CUDA API:每个示例只演示一个具体特性,比如事件计时、纹理读取、多 GPU 通信,看完就能照着写。
- 验证本机环境:装完工具链后先跑设备查询示例,确认驱动和显卡是否正常。
- 找算法参考实现:矩阵乘法、直方图、归约、排序、图像滤波都有现成实现,可以直接对照源码。
- 试用新硬件特性:CUDA Graphs、Tensor Core、协作组(Cooperative Groups:跨线程块同步的编程方式)等都有对应示例。
- 转 Python 学习:
python/目录用 CUDA Python 重写了一批基础概念示例。
开始之前要准备什么?
| 项目 | 要求 |
|---|---|
| GPU | 支持 CUDA 的 NVIDIA 显卡;默认构建目标为计算能力 7.5 及以上(Turing 及更新架构) |
| 工具链 | CUDA Toolkit(本仓库对应 13.3 版本),CMake 3.20 以上,支持 C++17 的编译器 |
| 可选依赖 | 部分示例需要 OpenGL、FreeImage、MPI 等;缺失时该示例会在构建时自动跳过,不影响整体编译 |
获取代码:
git clone https://gitcode.com/GitHub_Trending/cu/cuda-samples装完先执行nvcc --version,能正常输出版本号说明工具链可用。
建议的示例阅读顺序
- 先跑通第一个:从 cpp/0_Introduction/vectorAdd 开始,这是 GPU 编程的入门程序。边读源码边理解四步流程:分配显存 → 拷入数据 → 启动内核 → 拷回结果。
- 再看机器配置:运行 cpp/1_Utilities/deviceQuery,输出系统里每块 GPU 的参数,后面判断性能时以它为基准。
- 然后学通用技术:cpp/2_Concepts_and_Techniques/ 下的 reduction(归约:把大批数据累加成单个结果)、histogram(直方图)、scan(前缀和)等,是大多数实用程序的常用积木。
以该目录下的 dct8x8(8x8 离散余弦变换)为例,一个示例通常配有文档、图像素材和多种内核实现,能看出同一算法的不同优化写法:
编译与运行:最短三步
以 Linux 为例:
mkdir build && cd build cmake .. make -j$(nproc)cmake ..:分析全部示例,自动跳过缺依赖的项。make:编译所有示例,产物在 build 目录内,进入对应目录直接运行可执行文件。
Windows 上可用 Visual Studio 2019 及以上版本直接导入仓库根目录构建。
Python 示例不参与 CMake 编译,需要 Python 3.10 以上环境,进入具体示例目录,按python/requirements.txt安装依赖后运行其中的 .py 脚本,细节见各示例的 README。
卡住时先查什么
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 图形类示例(OpenGL/Vulkan 等)没编译出来 | 系统缺少对应图形 SDK 或库 | 属于自动跳过而非报错,依赖清单见根 README 的 Dependencies 章节 |
| 配置阶段报找不到 CUDA | 工具链未装好或路径不在环境中 | 先用nvcc --version确认安装,再检查环境变量 |
| 程序启动报无可用设备 | 显卡太老(计算能力低于 7.5)或驱动过旧 | 运行 deviceQuery 查看 GPU 型号与驱动版本 |
| 想单步调试 GPU 代码 | 默认构建不带设备调试符号 | 配置时加-DENABLE_CUDA_DEBUG=True,之后可用 cuda-gdb 调试 |
| 想批量验证环境是否健康 | 逐个手动运行太慢 | 在仓库根目录执行python3 run_tests.py --output ./test --dir ./build/cpp --config test_args.json |
适合把它用到哪些实际场景
- 图像处理:cpp/5_Domain_Specific/ 有双边滤波、去噪、边缘检测等;
cpp/4_CUDA_Libraries/nvJPEG演示 GPU 加速的 JPEG 解码,下图就是示例自带的图片素材:
- 金融计算:BlackScholes、binomialOptions、MonteCarloMultiGPU 等期权定价示例,适合理解蒙特卡洛方法在 GPU 上的写法。
- 线性代数:matrixMul 展示手写内核思路,
cpp/4_CUDA_Libraries/下的 cuBLAS、cuSOLVER 示例展示生产环境该调用哪些库。 - 性能调优:
cpp/6_Performance/聚焦统一内存、内存访问模式等具体优化主题。
下一步
挑一个和你当前场景最接近的示例,编译、运行、读一遍它的源码,这比只读文档快得多。
【免费下载链接】cuda-samplesSamples for CUDA Developers which demonstrates features in CUDA Toolkit项目地址: https://gitcode.com/GitHub_Trending/cu/cuda-samples
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考