当前位置:首页 > 科技资讯 > 正文

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解?

【导读】深度剖析CUDA Tile背后的战略布局与技术野心。

NVIDIA CUDA平台,刚刚迎来了其诞生20年以来最具颠覆性的一次版本更新!

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第1张

其中,最核心、最具颠覆性的更新当属CUDA Tile,它允许开发者直接使用Python替代C++编写GPU内核代码。

在CUDA 13.1版本中,NVIDIA引入了一种名为CUDA Tile的全新编程范式——一种颠覆传统的显卡代码编写方式,旨在简化开发流程并提升对未来硬件的适应能力。

其核心目标是通过抽象化底层硬件(如Tensor Cores)的复杂细节,大幅降低开发门槛。可以将其理解为从逐一调试乐队中的每件乐器,转变为仅需专注于指挥整体的音乐呈现。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第2张

这一重磅更新迅速引发了芯片界传奇人物、Tenstorrent CEO Jim Keller的关注与质疑:

Jim Keller提出了一个尖锐的观点:这次更新是否意味着CUDA「护城河」的终结?

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第3张

他的理由是:当NVIDIA的GPU也转向Tile瓦片结构,而其他硬件厂商同样在向瓦片架构靠拢时,AI内核的移植将变得更为容易。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第4张

但事实果真如此吗?

要厘清这个问题,需要深入分析两个关键点:

1. Jim Keller何许人也?他的观点为何举足轻重

2. CUDA Tile究竟是什么技术?CUDA的护城河到底指什么

Jim Keller堪称当代芯片设计领域最具代表性的CPU/SoC架构大师之一,业界常尊称他为「传奇架构师」、「芯片领域的GOAT候选人」。

简言之,他是那种真正重塑过CPU发展路线图的人物。

过去二十多年间,x86、移动SoC、AI芯片领域的几次重大突破,背后几乎都能看到Jim Keller的身影。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第5张

具体而言:

  • x86-64时代的奠基人之一:

作为x86-64指令集和HyperTransport的共同作者,他直接影响了当今几乎所有桌面、服务器CPU的ISA与互连方式。

  • 多次主导「公司级」逆袭战役:

在AMD期间,Athlon/K8时代首次让AMD在x86性能上与Intel正面抗衡;Zen架构则让AMD从濒临破产重回与Intel分庭抗礼的地位。在Apple时期,A4/A5芯片开启了iPhone自研SoC的进程,间接为后来的M系列芯片铺平了道路。

  • 横跨CPU、手机SoC、自动驾驶、AI加速器的「全栈」架构师:

很少有人能像他一样,在 通用CPU、移动SoC、车载SoC、AI加速器 等多个领域都亲自参与一线设计与架构决策。近年来,他频繁亮相于TSMC、三星等论坛,分享对未来工艺与架构的洞察,被誉为「半导体设计领域的传奇」。

因此,Jim Keller的观点具有极高的参考价值。

NVIDIA究竟是通过这次更新拆除了CUDA的「护城河」,还是以另一种方式将其加固?

去年,Jim Keller曾直言「CUDA是沼泽而非护城河」。

言下之意,CUDA的复杂性让开发者深陷其中难以抽身。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第6张

让我们简单回顾一下CUDA的发展历程。

在本次CUDA Tile推出之前,早在2006年,NVIDIA发布了G80架构和CUDA,CUDA的出现将这些并行的计算单元抽象为通用的线程(Threads),从而开启了通用GPU计算(GPGPU)的黄金时代。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第7张

二十年来,基于「单指令多线程」(SIMT,Single Instruction, Multiple Threads)的编程模型一直是GPU计算的「金科玉律」。

开发者习惯了从单个线程的视角出发,思考如何将成千上万个线程映射到数据上。

而在人工智能大爆发的今天,计算的核心原子不再是单一的标量数值,而是张量(Tensor)和矩阵。

传统的SIMT模型在处理这种块状数据时,显得日益笨重且效率低下。

技术重构:CUDA Tile与SIMT的范式革命

要理解CUDA Tile的更新内容,首先必须明白为什么旧有的方式行不通了。

SIMT模型的核心假设是:程序员编写一段串行代码(Kernel),GPU硬件负责将这段代码实例化为成千上万个线程。

一个简单的类比:

想象一个包工头(GPU的控制单元)带领32个搬砖工(线程)。比如要将一张图片调亮,包工头只需一声令下,每个工人负责一个像素点,大家互不干扰,动作整齐划一。

这就是SIMT的精髓:虽然人数众多,但听从统一指令,各自处理自己的小数据

这种模型在处理图像像素或简单的科学计算时游刃有余,因为每个像素的计算相互独立。

然而,现代AI计算的核心是矩阵乘法。

AI运算(深度学习)的核心不再是处理单个像素,而是矩阵乘法

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第8张

在硬件层面,NVIDIA引入了Tensor Core(张量核心)来加速矩阵运算。

Tensor Core并非一次处理一个数,而是一次处理一个16x16或更大的矩阵块。

为了用SIMT模型驱动Tensor Core,程序员不得不同时指挥多个线程协同工作。

在SIMT中,程序员仍在控制单个线程。为了使用Tensor Core,程序员必须指挥32个线程(一个Warp)协同作战,手动将数据从全局内存搬运到共享内存,再加载到寄存器,通过复杂的wmma(Warp-level Matrix Multiply Accumulate)指令进行同步。

开发者必须精细地管理线程间的同步和内存屏障。稍有不慎,就会导致死锁或数据竞争。

不同代际的GPU其Warp调度机制和Tensor Core指令集均有差异。

针对Hopper架构优化的极致性能代码,往往无法在Blackwell上直接运行,需要重新调优。

这正是Jim Keller所说的「沼泽」——代码里堆积了针对不同硬件特性的补丁,既不美观也难以维护。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第9张

这就是「SIMT力不从心」的根源所在:试图用管理独立个体的逻辑(SIMT),去指挥一个需要高度协同的集体动作(Tensor Core)

CUDA Tile:瓦片化计算的诞生

CUDA 13.1引入的CUDA Tile彻底抛弃了「线程」这一基本原子,转而以「瓦片」(Tile)作为编程的核心单位。

核心概念:什么是Tile?

在CUDA Tile模型中,Tile被定义为多维数组的一个分块(Subset of arrays)。

开发者不再需要思考「第X号线程执行什么操作」,而是聚焦于「如何将大矩阵切分成小块(Tiles),以及对这些块进行什么样的数学运算(如加法、乘法)」。

瓦片模型(左)将数据分割为块,编译器负责将其映射到线程。SIMT模型(右)则同时将数据映射到块和线程。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第10张

这种转变类似于从汇编语言跃迁到高级语言:

  • SIMT:手动管理寄存器分配、线程掩码、内存合并。
  • Tile:声明数据块形状(Layout),声明算子(Operator),编译器负责其余一切。

这种编程范式在Python等语言中十分常见,像NumPy这样的库允许指定矩阵等数据类型,然后用简洁的代码指定并执行批量操作。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第11张

在底层,正确的操作会自动执行,计算过程完全透明地持续推进。

架构支撑:CUDA Tile IR

这次更新不仅仅是语法糖,NVIDIA引入了一套全新的中间表示——CUDA Tile IR(Intermediate Representation)。

CUDA Tile IR引入了一套虚拟指令集,使得开发者能够以瓦片操作的形式对硬件进行原生编程。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第12张

开发者可以编写更高层级的代码,这些代码只需极小的改动即可在多个世代的GPU上高效执行。

通过这种对比可以看出,CUDA Tile实际上是NVIDIA对AI编程范式的一次「降维打击」——将复杂的硬件细节封装在编译器内部,仅对外暴露算法逻辑。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第13张

在过去的CUDA版本中,C++始终是一等公民。

然而在CUDA 13.1中,NVIDIA极其罕见地首发推出了cuTile Python,而C++支持则被延后。

这一策略转变深刻反映了AI开发生态的现状:Python已经成为AI领域的通用语言。

在此之前,AI研究员如果想优化一个算子,不得不离开Python环境,学习复杂的C++和CUDA。

cuTile的出现旨在让开发者留在Python环境中即可编写高性能Kernel。

根据NVIDIA的技术博客,我们可以通过一个向量加法的例子来感受cuTile的变革。

传统SIMT方式(伪代码概念):

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第14张

cuTile Python方式:

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第15张

在这个例子中,开发者不需要知道GPU有多少个核心,也不需要了解Warp是什么。

ct.load和ct.store在底层可能会调用Blackwell架构最新的异步内存复制引擎,但这对开发者是完全透明的。

CUDA Tile的真正对手是谁?

要回答「是否终结了护城河」,必须引入另一个变量:OpenAI Triton

Triton是OpenAI为了摆脱对NVIDIA闭源库(如cuDNN)的依赖而开发的开源语言。

Triton的核心理念与CUDA Tile惊人地一致:基于块(Block-based)的编程。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第16张

这或许正是CUDA此次更新的主要针对目标。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第17张

经过上述分析,NVIDIA此次更新究竟是终结了CUDA的护城河,还是转向瓦片架构使AI内核更易移植?

在社区中,更多的声音指向以下结论。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第18张

NVIDIA代际间的移植性:这是CUDA Tile主要解决的问题。

从Hopper移植到Blackwell,甚至未来的Rubin,使用Tile IR编写的代码将无缝运行且自动优化。

从这个角度看,移植性得到了极大增强

跨厂商的移植性:这是行业希望解决的问题(例如从NVIDIA移植到AMD MI300)。

但在这方面,CUDA Tile几乎没有任何帮助,甚至让移植变得更为困难。

CUDA Tile深度解析:NVIDIA二十年最大更新,是加固护城河还是自我拆解? Tile  GPU编程 Jim Keller 人工智能芯片 第19张

Jim Keller本人对CUDA并无好感,曾称CUDA为「沼泽」,意指其复杂性让开发者深陷其中无法脱身。

综上所述,NVIDIA并没有拆除护城河,而是将护城河的墙壁修缮得更加美观、更易于攀爬(进入),但在墙内构建了更为舒适的迷宫(Tile IR生态),使得用户更不愿意离开。

瓦片架构使AI内核在NVIDIA硬件之间极易移植,但在不同厂商硬件之间却更难移植。

Jim Keller也许是对的,CUDA曾经是沼泽。

但NVIDIA刚刚在沼泽上铺设了一条高速公路(CUDA Tile IR)。

而这条路,目前只通向NVIDIA的城堡。

参考资料:

https://x.com/jimkxa/status/1997732089480024498

https://developer.nvidia.com/blog/focus-on-your-algorithm-nvidia-cuda-tile-handles-the-hardware/

https://developer.nvidia.com/blog/nvidia-cuda-13-1-powers-next-gen-gpu-programming-with-nvidia-cuda-tile-and-performance-gains

https://developer.nvidia.com/blog/simplify-gpu-programming-with-nvidia-cuda-tile-in-python

https://www.tomshardware.com/tech-industry/artificial-intelligence/jim-keller-criticizes-nvidias-cuda-and-x86-cudas-a-swamp-not-a-moat-x86-was-a-swamp-too