搭建 GPU 内核开发环境的实用笔记:CUDA 13 的 GPU 支持界限、异步计时陷阱、性能分析器计数器权限 [P]

Reddit r/MachineLearning 工具

摘要

GPU 内核工程系列课程第 1 讲的实用笔记,涵盖 CUDA 13 对 GPU 计算能力的最低要求、驱动程序/工具包/PyTorch 运行时之间的区别、异步 GPU 计时的常见陷阱,以及如何修复 Nsight Compute 的 ERR_NVGPUCTRPERM 性能分析计数器权限错误。

我正在制作一个免费的 GPU 内核工程系列(在我自己的频道上;之前在这里发布过路线图:https://www.reddit.com/r/MachineLearning/comments/1xa4h2g/open_gpu_kernel_engineering_series_naive_gemm_to/ )。第 1 节是环境配置课。在准备过程中,我整理了几个让我花了不少时间、却很少看到有人集中介绍的问题,所以直接分享到这里。视频和代码链接在文末。检查计算能力,而不只是“有没有 NVIDIA GPU” nvidia-smi --query-gpu=name,compute_cap --format=csv 7.5 是 Turing,8.0/8.6 是 Ampere,8.9 是 Ada,9.0 是 Hopper。这决定了你能做什么:- CUDA 13 已不再支持 Maxwell、Pascal 和 Volta。这些显卡请安装 CUDA 12 工具包。- GTX 16 系列采用 Turing 架构,但没有 Tensor Core。- 使用 Tensor Core 需要 RTX 20 系列或更新的显卡(或 T4);Ampere 专用指令需要 Ampere 或更新的架构。- FP8 需要 Ada 或 Hopper。Hopper 专有功能(TMA、WGMMA)需要 H100,大多数人都得租用。驱动、工具包和 PyTorch 的运行时是三个不同的东西 nvidia-smi 顶部显示的 CUDA 版本是驱动支持的最新版本,不是已安装的版本。通过 pip 安装的 PyTorch 自带 CUDA 运行时,因此 torch.cuda.is_available() 返回 True 并不能说明系统中是否有 nvcc。在 WSL 2 上,不要在发行版内部安装 Linux 驱动;应使用 WSL-Ubuntu 仅安装工具包的安装程序,因为实际使用的是 Windows 驱动。GPU 启动是异步的,因此简单计时测到的是排队时间 用 Python 计时器包住 x @ y,测到的主要是启动耗时,而不是实际计算耗时。先预热,再同步,使用 CUDA 事件,并对多次运行取平均值:def bench(fn, iters=20): for _ in range(3): fn() torch.cuda.synchronize() s, e = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True) s.record() for _ in range(iters): fn() e.record() torch.cuda.synchronize() return s.elapsed_time(e) / iters # 毫秒 对于矩阵乘法,吞吐量约为 2*M*N*K 次浮点运算除以耗时。记录数值时也要注明 dtype,因为 FP32 和 BF16 的基准性能差异很大。性能分析器计数器:ERR_NVGPUCTRPERM 默认情况下,非管理员用户无法读取 GPU 性能计数器,因此 Nsight Compute 会报这个错误。解决方法:用 sudo 运行 ncu(使用完整路径,因为 sudo 通常不会保留你的 PATH),或者让管理员为所有用户启用计数器访问权限。在 Windows/WSL 上,需要从 Windows 端启用。如果你租用 GPU,请在确定服务商之前测试这一点,因为托管容器平台可能会阻止访问计数器。先做冒烟测试,再做其他事情 写一个极小的加一内核,对每次 CUDA 调用都进行错误检查,用 nvcc -arch=native 编译,然后分别用 nsys 和 ncu 对它运行一次。如果能成功,说明驱动、工具包、GPU 和两个性能分析器都正常。本节还会介绍预备知识(指针、矩阵的扁平索引、矩阵乘法及其 FLOP 计算、PyTorch 基础),并比较获取 GPU 的不同方式。时长约 40 到 45 分钟。视频:https://youtu.be/h_zWngMWHBE 代码:https://github.com/prasoonmhwr/gpu_kernel_engineering (文件夹:session-01-prerequisites-setup)注意事项:这些命令是针对 Ubuntu 编写的,我没有测试过所有发行版。想请教每天做这些工作的朋友:- 哪个环境配置陷阱让你花的时间最多?我肯定还有遗漏(Secure Boot 和驱动加载、容器工具包、主机编译器不匹配)。- 对于你的环境,上面是否有任何错误或过时的信息?
查看原文

相似文章

@kmeanskaran: https://x.com/kmeanskaran/status/2105635344385450151

X AI KOLs Timeline

一篇面向 AI 工程师的 GPU 深度解析,涵盖 GPU 架构(SM、Tensor Core、CUDA kernel)、训练与推理的差异、GPU 各代产品与定价、NVIDIA 的竞争对手,以及在本地运行 gpt-oss-120b 和 Kimi K3 所需的显存与算力实操计算。