news 2026/9/18 20:07:23

CUDA Samples 上手指南:如何编译运行官方示例,并少走弯路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CUDA Samples 上手指南:如何编译运行官方示例,并少走弯路

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,能正常输出版本号说明工具链可用。

建议的示例阅读顺序

  1. 先跑通第一个:从 cpp/0_Introduction/vectorAdd 开始,这是 GPU 编程的入门程序。边读源码边理解四步流程:分配显存 → 拷入数据 → 启动内核 → 拷回结果。
  2. 再看机器配置:运行 cpp/1_Utilities/deviceQuery,输出系统里每块 GPU 的参数,后面判断性能时以它为基准。
  3. 然后学通用技术: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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 19:59:37

Zustand redux 中间件详解:用 Redux 式 action/reducer 驱动状态更新

Zustand redux 中间件详解:用 Redux 式 action/reducer 驱动状态更新 【免费下载链接】zustand 🐻 Bear necessities for state management in React 项目地址: https://gitcode.com/gh_mirrors/zu/zustand redux 是 Zustand 提供的一个官方中间件…

作者头像 李华
网站建设 2026/9/18 19:57:42

概要设计与详细设计:从定骨架到填血肉的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 19:57:13

酒店员工管理系统自研实践:排班考勤与数据库设计

简介:一份针对酒店员工管理系统的计算机专业毕业论文设计文档,适合计算机相关专业学生参考选题、结构撰写与系统开发实现。内容围绕SSM框架、MySQL数据库、HTML及B/S架构展开,完整覆盖课题背景、可行性分析、系统流程图、用例图、数据库设计、…

作者头像 李华