英伟达亲手终结CUDA「护城河」?传奇芯片架构师引发争议 刚刚宣布了, 英伟达的CUDA平台诞生20年来最重大的一次更新。其中, 最为关键且颇具颠覆性的更新内容便是CUDA Tile, 它能够使开发者借助其以别的方式来撰写代替用C所编排的内核代码。于CUDA 13.1版本里, 他们引进了一项称作CUDA Tile的技术, 这是一种全新的显卡代码编写方式, 它能使整个过程变得更省事, 还更具备未来适应性。以脱离手工逐一调节诸多乐器的方式, 将每件乐器于手动调乐团里的操作, 转移转换为纯粹掌控指挥音乐, 此作用是凭借使Coes这般的底层硬件予以抽象化处理, 借此使细节变少, 进而促使开发门槛能够得以降低。这一有着重大影响力的更新, 很快就引来了芯片领域堪称传奇的人物, 也就是担任CEO职位的Jim的关注, 同时也引发了质疑:Jim提出了一个观点, 这次更新是不是终结了CUDA的“护城河”呢?其给出的理由为, 当英伟达的GPU朝着Tile瓦片结构转变时, 并且同时其他硬件厂商也向瓦片架构进行转变, 如此一来AI内核将会更容易进行移植。但事实真是如此吗要想讨论清楚这件事需要分析两个问题1. Jim 是谁为什么他的话有分量2. 以前, CUDA Tile属于何种技术? 究竟, CUDA护城河乃为何物?存在一个名为Jim的人, 此人属于当代芯片领域当中, 具备最为突出代表性的CPU/SoC架构师群体里的一员, 于行业范围之内, 存在众多人士, 会直接以「传奇架构师」来称呼他, 还会将其称作是「芯片圈GOAT之一」。一句话他是那种真正改写过CPU发展路线图的人。近二十多年来, x86有几次大级别翻身仗, 移动SoC也有几次大级别翻身仗, AI芯片同样有几次大级别翻身仗, 在这些翻身仗的背后, 大概率能够看到Jim的影子。更细一点说所以Jim 的观点非常有参考性意义。英伟达在这次更新的时候, 有没有把CUDA的“护城河”给拆除掉, 又或者是用另外一种形式对它进行了加固?去年Jim 曾直言「CUDA是沼泽而非护城河」。意思是CUDA的复杂性让开发者深陷其中无法脱身。让我们简单回顾下CUDA的历史。早在2006年, 在此次CUDA Tile之前, 英伟达发布了G80架构和CUDA, CUDA的出现把这些并行的计算单元抽象成通用的线程, 进而开启了通用GPU计算GPGPU的黄金时代。由于某种原因, 在长达二十年的时间跨度里, 一种以「单指令多线程」SIMT, 这儿有点特殊标记为基础构建起来的编程模型, 始终是GPU计算领域被奉为圭臬的存在。开发者习惯于把单个线程的视角当作出发点, 思索怎样去让成千上万个线程和数据相互映射 , 标点。处于如今人工智能大爆发时段, 计算的核心原子不再是单个的标量数值, 却是张量以及矩阵?对于传统的SIMT模型而言, 在处理此类块状数据之际, 越发显得笨重不堪, 并且效率极为低下。技术的重构CUDA Tile与SIMT的范式断裂首当其冲要明白的是, 为何以往的方式不可行了, 之后才能够去领会, CUDA Tile究竟更新了哪些内容。SIMT 模型有着这样的核心假设, 即程序员编写的是一段串行的代码, 而后 GPU 硬件要做的事宜是, 把这段代码去实例化成成千上万个线程。粗暴一点理解试想存在一个包工头, 此包工头乃是GPU的控制单元, 还有32个搬砖工, 把这些搬砖工视为线程, 假若要将一张图变亮, 那么对于这个包工头而言, 他只需下达一个命令, 而每个工人负责一个像素点, 并且大家彼此之间互不干扰, 动作能够整齐划一。此即为SIMT的核心要义, 尽管人数众多, 然而却聆听同一指令, 处理各自的微小数据。此种模型于处理图像像素之际, 十分完美, 在进行简单的科学计算之时, 亦是如此, 究其缘由在于, 针对每个像素展开的计算, 都是相互独立的。然而现代AI计算的核心是矩阵乘法。不是单个像素的被处理成为AI运算深度学习的核心, 而是矩阵乘法成为了AI运算深度学习的核心。在硬件的层面之上, 英伟达把Core张量核心给引入进来从而去加速矩阵的运算。Core并非一次针对一个数展开处理, 而是一次针对一个16乘以16或者尺寸更大的矩阵小块进行处理。程序员想要利用SIMT模型驱动Core, 不能不实施指挥同时多个线程的举动。在SIMT里, 程序员依旧在操控单个线程, 要运用Core, 程序员得指挥32个线程也就是一个Warp共同协作, 手动将数据从全局内存转移到共享内存, 接着再加载到寄存器, 依从复杂的wmma也就是Warp-level指令来实现同步。对于开发者而言, 线程间同步以及内存屏障的管理, 务必要力求精细入微。设若稍有一点儿不小心, 那么便极有可能致使死锁状况的出现, 或者引发数据竞争等不良状况。GPU不同代际, 其拥有不一样的Warp调度机制, Core指令集也呈现各异的状态喔。专门针对架构优化的, 处在极为臻美的性能状态下的代码, 常常是没办法于原位置直接就行运作处理, 而是得再次展开优化调整手段才行。这便是Jim所讲的那个「沼泽」, 代码之中存有针对不同硬件特性的补丁, 它既不具备美观性, 又难以进行维护。这便是存在「SIMT力不从心」这种状况的缘由, 那就是, 尝试运用用于管理独立个体的逻辑, 也就是SIMT, 去支配一个要求具备高度协同性的集体动作, 此集体动作即Core。CUDA Tile瓦片化计算的诞生在CUDA 13.1当中被引入的CUDA Tile, 将「线程」这条基本原子完全摒弃掉, 而是把「瓦片」Tile当作编程方面的核心单位。核心概念什么是Tile于CUDA Tile模型里, Tile被界定成多维数组的一块分块, 是多维数组的一部分。开发者不再去思索「第X号线程开展什么操作」, 而是转为思索「怎样把大矩阵划分成小块也就是Tiles, 以及针对这些块施行什么数学运算像加法、乘法之类」。那种被称作瓦片模型的, 而且是位于左边的部分, 它会把数据分割成块, 然后编译器会把这些块映射到线程上。而那种名为SIMT模型的, 也就是在右边的那个, 它是以同时的方式把数据映射到块以及线程上的。这种转变类似于从汇编语言跳转到了高级语言SIMT: 对寄存器分配进行手动管理, 还有线程掩码以及内存合并。Tile: 对数据块形状予以声明, 去声明算子, 一切都由编译器来负责。这种编程范式于等语言之内是十分常见的呈现情形, 诸如NumPy此类的库能够准许对于矩阵等这般的数据类型予以指定, 随后借由简约的代码来进行设置并付诸执行批量的操作。在底层正确的操作会自动执行计算过程完全透明地继续进行。架构支撑CUDA Tile IR这次更新并非仅仅只是语法糖那简单, 英伟达引入了一套全新的中间表示 , 其被称作CUDA Tile IR。CUDA Tile IR引入了一套虚拟指令集, 这套指令集中, 使得能实现对于使得开发者可行的以对硬件开展原生编程的瓦片操作形式, 开发者可以通过它来进行原生编程。进行开发的人员能够去编写处于更高层级的代码, 而这些代码仅仅只需要出现极少程度的改动, 便能够在那多个不同世代的GPU上面高效地执行。借助这种对比能够发觉, CUDA Tile其实就是英伟达针对AI编程范式而下的一次「具有颠覆性影响袭击」, 就是把繁杂的硬件方面细枝末节封装于编译器内部, 仅仅展示算法的逻辑。在过去的CUDA版本中C始终是一等公民。然而, 在CUDA 13.1这个环境里, 英伟达以极其罕见的情况, 进行了首发推出的举动, 并且, C支持这一情况是被延后的。如此一种策略转变, 深度地反映出了AI开发生态的现状, 那即是, 已然变成了AI的通用语言。在此之前, 要是AI研究员期望对一个算子予以优化, 那就必须得离开所处环境, 去学习繁杂的C以及CUDA。的出现旨在让开发者留在环境中即可编写高性能。依据英伟达所撰写的技术博客, 我们能够借助一个呈现向量加法的实例去体悟那变革。传统SIMT方式伪代码概念方式于这个例子里, 开发者无需晓得GPU具备多大数量的核心, 并且也无需知晓Warp究竟是什么。在底层, ct.load以及ct.store, 有可能会去调用架构最新的异步内存复制引擎, 然而这对于开发者来说是处于透明状态的。CUDA Tile对抗的是谁要回答「是否终结了护城河」必须引入另一个变量 。它是一种开源语言, 其目的在于摆脱对英伟达闭源库, 比如像cuDNN这样的库的依赖。其核心理念, 跟CUDA Tile, 有着惊人的一致之处, 那就是基于块的编程。这或许是CUDA此次更新的最大针对者。诸多分析之后, 英伟达此次所进行的更新, 究竟是不是终结了CUDA的护城河 , 转向瓦片架构这一行为, 是否致使AI内核在移植性方面变得更加容易了呢?在社区中更多的声音指向如下结论。代际间英伟达的移植性, 这是主要由CUDA Tile解决的问题。从移植开始, 直至未来的Rubin, 运用编写而成的代码, 其将表现为无缝运行, 并且会自动进行优化。这一点上移植性极大增强。属于不同厂商之间的移植性这项内容, 这可是该行业期望去解决的问题, 举例来说像是从英伟达转移到AMD MI300这种情况。就此而言, CUDA Tile几乎无甚助益, 甚至致使移植变得愈发困难。Jim他自己, 压根就一点都不待见CUDA, 还把CUDA称作是「沼泽」, 意思是说, 它的那种复杂性, 会使得开发者深陷当中, 没办法从中脱离出来。总体而言, 英伟达压根儿就没有动拆除防护沟的念头, 却是把防护沟的墙壁打造得格外养眼、显著利于翻过闯进来, 然而在墙壁里面营造了愈发惬意的迷宫, 也就是Tile IR生态环境, 致使使用的人越发抗拒离开。AI内核于英伟达硬件之间, 因瓦片架构而极易被移植, 然而在不同厂商硬件之间, 却更难以实现移植。Jim 也许是对的CUDA曾经是沼泽。然而, 英伟达才把一条高速公路CUDA Tile IR铺设在了沼泽之上。而这条路目前只通向英伟达的城堡。