社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

英伟达自毁CUDA门槛!15行Python写GPU内核,性能匹敌200行C++

脚本之家 • 5 月前 • 194 次点击  
将 脚本之家 设为“星标
第一时间收到文章更新
梦晨 发自 凹非寺
量子位 | 公众号 QbitAI
本文经AI新媒体量子位(公众号 ID: QbitAI)授权转载,转载请联系出处

GPU编程变天了。

英伟达发布最新版CUDA 13.1,官方直接定性:这是自2006年诞生以来最大的进步

核心变化是推出全新的CUDA Tile编程模型,让开发者可以用Python写GPU内核,15行代码就能达到200行CUDA C++代码的性能。

消息一出,芯片界传奇人物Jim Keller立即发问:

英伟达是不是亲手终结了CUDA的“护城河”?如果英伟达也转向Tile模型,AI内核将更容易移植到其他硬件上。

Jim Keller参与设计过AMD Zen架构、苹果A系列芯片、特斯拉自动驾驶芯片的”硅仙人”,他的判断在行业里相当有分量。

那么问题来了:CUDA这次到底改了什么?为什么会被认为是”自毁长城”?

GPU编程范式从“线程”到“瓦片”

要理解这次更新的意义,得先回顾一下传统CUDA编程有多折磨人。

过去20年,CUDA一直采用SIMT(单指令多线程)模型,开发者写代码时,需要手动管理线程索引、线程块、共享内存布局、线程同步,每一个细节都要自己操心。

想要充分利用GPU性能,特别是用上Tensor Core这类专用模块,更是需要深厚的经验积累。

CUDA Tile彻底改变了这套玩法:

开发者不再需要逐线程地编写执行路径,而是把数据组织成Tile(瓦片),然后定义在这些Tile上执行什么运算。至于怎么把这些运算映射到GPU的线程、Warp和Tensor Core上,编译器和运行时会自动搞定。

就好像NumPy之于Python。

英伟达为此构建了两个核心组件:

CUDA Tile IR是一套全新的虚拟指令集,它在高级语言和硬件之间加了一层抽象,确保基于Tile编写的代码能在不同代际的GPU上运行,从当前的Blackwell到未来的架构都能兼容。

cuTile Python则是面向开发者的接口,直接用Python写GPU内核,门槛一下子从“HPC专家“降到了”会写Python的数据科学家都可以干。

另外,这次更新还带来了一系列面向Blackwell的性能优化:

  • cuBLAS引入了FP64和FP32精度在Tensor Core上的仿真功能
  • 新增的Grouped GEMM API在MoE(混合专家模型)场景下能实现高达4倍加速
  • cuSOLVER的批处理特征分解在Blackwell RTX PRO 6000上相比L40S实现了约2倍的性能提升
  • 开发者工具Nsight Compute新增了对CUDA Tile内核的性能分析支持,可以把性能指标直接映射回cuTile Python源代码。

目前CUDA Tile仅支持Blackwell架构(计算能力10.x和12.x),开发重点集中在AI算法上。英伟达表示未来会扩展到更多架构,并推出C++实现。

硅仙人的质疑:降低门槛是一把双刃剑

那么Jim Keller为什么说英伟达可能”终结了自己的护城河”?

关键就在于Tile编程模型不是英伟达独有的。AMD、Intel以及其他AI芯片厂商的硬件,在底层架构上同样可以支持基于Tile的编程抽象。

过去CUDA难以移植,很大程度上是因为SIMT模型与英伟达硬件深度绑定,开发者要针对具体的GPU架构手写优化代码。这些代码换到别家硬件上,要么跑不了,要么性能大打折扣。

但Tile模型天然具有更高的抽象层次。当开发者习惯了“只管定义Tile运算,硬件细节交给编译器”这种思维方式后,理论上同一套算法逻辑更容易适配到其他支持Tile编程的硬件上。

正如Jim Keller所说:”AI内核将更容易移植。”

不过英伟达也考虑了后手,CUDA Tile IR提供了跨代兼容性,但这种兼容性是建立在CUDA平台之上的。

开发者写的代码确实更容易移植了,但移植的目标是英伟达自家的不同代GPU,而非竞争对手的硬件。

从这个角度看,CUDA代码可以从Blackwell无缝迁移到下一代英伟达GPU,但要迁移到AMD或Intel的平台上,依然需要重写。

不管护城河是加深还是削弱,有一点是确定的:GPU编程的门槛确实在大幅降低。

过去能熟练驾驭CUDA的开发者是稀缺资源,会写Python的人一抓一大把,但能把代码优化到跑满Tensor Core的专家寥寥无几。

CUDA Tile和cuTile Python打通了这个瓶颈。英伟达在开发者博客中提到,一个15行的Python内核性能可以媲美200行手动优化的CUDA C++代码。

大量数据科学家和AI研究者从此可以直接上手写高性能GPU代码,不用再等HPC专家来帮忙优化。

参考链接:
[1]https://developer.nvidia.com/blog/focus-on-your-algorithm-nvidia-cuda-tile-handles-the-hardware
[2]https://x.com/jimkxa/status/1997732089480024498

图片
  推荐阅读:
  1. 安全标准全面升级后,我们可能买不到便宜充电宝了
  2. 领导最想干掉的,是AI用得好的人
  3. 有什么事情是当了程序员之后才知道的?
  4. 存储暴涨让PC厂商苦不堪言,配置回到10年前?

  5. 微信聊天反复出现「对方正在输入…」,说明对方在干什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/190194