@matthewjgunton: NVIDIA 软件栈中有 3 个基本层级:CUDA C++、PTX 和 SASS。理解全部 3 个层级有助于你明白为什么 CU…
摘要
一条教育性推文,解释了 NVIDIA 软件栈的三个层级(CUDA C++、PTX、SASS),以及 CUDA 的抽象如何构建护城河,同时提到 Luminal 的自动编译器搜索。
查看缓存全文
缓存时间: 2026/08/07 16:54
NVIDIA 软件栈有 3 个基本层次 CUDA C++、PTX 和 SASS 理解全部三层,你就会明白 CUDA 为何能构建起万亿美元的护城河
CUDA C++ - 它为你提供 NVIDIA 的编程模型(线程、块、共享内存、同步),而无需你为特定的 GPU 架构编写指令。事实上,一个优秀的 CUDA 内核常常能跨多代 NVIDIA 硬件使用。这意味着新芯片发布第一天就有现成的实用软件可用
CUDA C++ 会被转换为 PTX
PTX(并行线程执行)- 这是一个虚拟指令集。由于它们是虚拟机指令,所以可以让一个 CUDA 内核无须重写即可在不同的 NVIDIA 设备上运行。话虽如此,当我们想要在芯片的某个特定部分使用特定指令(如 WGMMA)时,我们会用 PTX 来指定,这样编译期间就不会对我们想用的是什么产生歧义。当然,这种选择会带来可移植性上的权衡。一旦我们明确指定了想要的硬件组件,就无法将该内核移植到没有该组件的 NVIDIA 设备上
PTX 会被转换为 SASS
SASS - NVIDIA 的原生机器码。这是旅途的终点。我们把虚拟指令集转换为能在特定机器上运行的确切可执行代码。这是代码可移植性最差的版本,但当然也是最完整的。在这个层面上编码非常痛苦,所以极少有人涉足
CUDA 的一大优势是,你可以把为 Ampere 编写的内核在 Hopper 发布当天迁移到 Hopper 上。这让 NVIDIA 的软件栈产生了复利效应
挑战在于抽象。由于有了这种距离,你严重依赖 NVIDIA 的编译器来寻找在不同硬件上运行代码的快速方式
在实践中,开发者会尝试许多不同的策略,来找到运行其内核的最快方式 换句话说,你必须进行手动搜索
在 Luminal,我们正在构建一个编译器,它将完全自动且确定性地处理这种搜索。
相似文章
@charles_irl: https://x.com/charles_irl/status/2071606346844442871
本文通过一个简单的向量加法示例,详细介绍了CUDA内核从源代码到硬件执行的编译和启动全过程,并阐述了nvcc、PTX、SASS及ioctls的作用。
@charles_irl: GPU 术语表新增文章:CuTe DSL、CUTLASS 和 CuTe——用于编写一些最高性能…
GPU 术语表新增文章,涵盖 CuTe DSL、CUTLASS 和 CuTe——这些工具用于在数据中心 GPU 上编写高性能 GPU 内核,并附有 Python 示例。
@goyal__pramod: 软件在进化,你也应该如此!这是我读过的理解GPU和CUDA的最佳博客!
推荐一系列理解GPU和CUDA的博客,鼓励开发者提升技能的推文。
@Suryanshti777: NVIDIA刚刚揭秘了它们用来让LLM微调显著加速的隐藏技巧。不是新GPU。不是大…
NVIDIA和Unsloth发布了一篇技术指南,详细介绍了三种底层优化方法,可将LLM微调速度提升高达25%,包括打包序列缓存、双缓冲检查点存储和优化的MoE路由。该指南提供了深入的系统级解释和基准测试,面向机器学习工程师和开发者。
C++ CuTe / CUTLASS vs CuTeDSL (Python) in 2026 — 新的GPU内核/LLM推理工程师到底应该学什么?[D]
讨论GPU内核工程从C++ CuTe/CUTLASS向NVIDIA基于Python的CuTeDSL的转变,质疑新工程师是应该学习遗留的C++模板,还是优先考虑为LLM推理工作而兴起的新技术栈。