GPU编程
搜索文档
Jim Keller:英伟达“自毁”CUDA护城河
半导体芯闻· 2025-12-09 18:36
文章核心观点 - NVIDIA对其CUDA软件堆栈进行了重大升级,推出了CUDA Tile,将传统的SIMT编程模型转变为基于图块的方法,旨在简化GPU编程并提升对张量核心等专用硬件的抽象[2] - 芯片架构师Jim Keller认为,此次更新可能标志着CUDA软件独占性的结束,因为基于图块的方法在业界普遍,可能简化代码向其他GPU平台的移植[2] - 然而,文章也指出,CUDA Tile通过其专有技术优化了NVIDIA硬件,实际上可能巩固了公司对CUDA生态的控制,加强了其竞争优势[5] CUDA Tile 更新的核心内容与意义 - CUDA Tile是NVIDIA CUDA平台自2006年诞生以来最大的进步,引入了基于图块的并行编程虚拟指令集,是GPU编程领域的一次“革命性”更新[6] - 更新彻底改变了编程模式:此前程序员需精细调整图块大小、内存等参数;之后,程序员可将更多精力集中于核心算法逻辑,而由编译器和运行时自动处理硬件复杂性[4] - 新模型专注于结构化矩阵运算和卷积等高度常规的操作,成功减少了手动优化需求,使更广泛的用户群体能够轻松上手GPU编程[4] - 此次更新是NVIDIA让AI惠及所有人的方法之一,尽管其性能可能略逊于底层手动优化实现[4] 技术架构与实现细节 - CUDA Tile的基础是CUDA Tile IR,这是一套全新的底层虚拟机,引入了一套用于原生图块操作的虚拟指令集[4][9] - 它允许开发者以更高层次编写算法,抽象化张量核心等专用硬件的细节,使代码能够兼容当前及未来的张量核心架构[7] - CUDA Tile IR通过原生支持基于图块的程序,扩展了CUDA平台功能,类似于PTX确保SIMT程序可移植性的角色[9] - 编程范式允许开发者通过指定数据块来编写算法,并定义对这些块执行的计算,无需逐个元素设置执行方式,类似于Python中NumPy库的操作方式[7][9] - 大多数开发者将通过NVIDIA cuTile Python等高级接口与CUDA Tile交互,而CUDA Tile IR主要面向编译器或库的开发者[12] 对行业生态与竞争格局的潜在影响 - 基于图块的方法在业界已十分普遍,例如Triton等框架就采用了这种方法,这可能使将CUDA代码先移植到Triton,再移植到AMD等公司的AI芯片上变得更加容易[5] - 当抽象层级提高时,开发者无需再编写特定于架构的CUDA代码,理论上代码移植会变得更加容易[5] - 然而,CUDA Tile背后的专有技术针对NVIDIA硬件语义进行了深度优化,因此即使移植变容易,实现高性能仍然复杂[5] - 通过简化CUDA编程,NVIDIA实际上可能是在巩固其对CUDA软件堆栈的控制,加强其竞争优势[5] - CUDA Tile并非要取代SIMT,两者可以共存:开发者可根据需要选择编写SIMT内核或使用张量核心的分块内核,两者在软件堆栈中作为互补路径存在[10]
英伟达自毁CUDA门槛,15行Python写GPU内核,性能匹敌200行C++
36氪· 2025-12-08 15:23
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彻底改变了这套玩法: 开发者不再需要 ...
英伟达自毁CUDA门槛!15行Python写GPU内核,性能匹敌200行C++
量子位· 2025-12-08 12:00
梦晨 发自 凹非寺 量子位 | 公众号 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迎来史上最大更新!
机器之心· 2025-12-06 12:08
核心观点 - NVIDIA发布了CUDA Toolkit 13.1,这是其CUDA平台自2006年诞生以来20年最大的一次更新[2] - 此次更新的核心是引入了全新的、更高层级的CUDA Tile编程模型,旨在简化GPU编程,特别是针对AI领域的张量计算,并抽象化专用硬件细节[4][6][14] - 更新还包括对Green Context的运行时API支持、多进程服务(MPS)增强、开发者工具升级以及核心数学库的性能优化,全面提升了软件栈的能力和效率[18][23][31][37] CUDA Tile 编程模型 - **核心概念与优势**:CUDA Tile是一种基于Tile(数据块)的编程模型,允许开发者在高于传统单指令多线程(SIMT)的层级编写GPU核函数[6] 开发者只需指定数据块(Tile)和要在其上执行的数学运算,编译器和运行时环境会自动决定将工作负载分发到各线程的最佳方式,从而简化了高性能代码的编写[7][14] - **抽象硬件细节**:该模型屏蔽了调用Tensor Core等专用硬件的底层细节,并且使用CUDA Tile编写的代码将能够兼容当前及未来的GPU架构[8][14] - **组成组件**:CUDA 13.1包含两个用于Tile编程的组件:CUDA Tile IR(一种用于NVIDIA GPU编程的全新虚拟指令集架构)和cuTile Python(一种新的领域特定语言,用于在Python中编写基于数组和Tile的核函数)[9] - **当前支持与未来规划**:目前CUDA Tile仅支持NVIDIA Blackwell(计算能力10.x和12.x)系列产品,开发重点聚焦于AI算法的Tile编程[15] 公司计划在未来的CUDA版本中扩展对更多架构的支持,增加更多特性、功能并提升性能,同时引入C++实现[15] 运行时与多进程服务(MPS)更新 - **Green Context运行时支持**:自CUDA 13.1起,轻量级的Green Context正式在运行时API中开放使用,此前已在驱动API中提供[19][20] 它允许用户定义和管理GPU资源的独立分区(主要是流式多处理器SM),可用于确保高优先级、低延迟的任务始终有可用的SM资源[20] - **可定制的SM分区**:引入了更加可定制的`split()` API,使开发者能够通过单一接口构建此前需要多次API调用才能完成的SM分区,并配置工作队列以减少不同Green Context之间的伪依赖[21] - **内存局部性优化分区(MLOPart)**:这是NVIDIA Blackwell系列及更新GPU上的一项新特性,允许基于同一物理GPU创建多个专门优化内存局部性的独立CUDA设备,每个设备拥有更少的计算资源和更小的可用内存[24][26] 目前该功能仅支持NVIDIA B200与B300系列产品[27] - **静态流式多处理器(SM)分区**:针对NVIDIA Ampere架构及更新GPU,为MPS客户端提供了一种创建独占SM分区的方法,旨在提供确定性的资源分配并改善客户端之间的隔离性[28] 开发者工具与性能分析 - **Nsight Compute增强**:增加了对CUDA Tile核函数的性能分析支持,在摘要页新增“Result Type”列以区分Tile与SIMT核函数,在详情页新增“Tile Statistics”部分总结Tile维度和管线利用率,并在源码页支持将指标映射到高层级的cuTile源码[32][34] - **编译时修补与插桩**:NVIDIA Compute Sanitizer 2025.4通过`-fdevice-sanitize=memcheck`编译器标志,增加了对NVCC编译时修补的支持,增强了内存错误检测能力和工具性能[33] 编译时插桩可将错误检测直接集成到NVCC中,实现更快的运行速度并捕捉更隐蔽的内存问题[35] - **Nsight Systems新功能**:NVIDIA Nsight Systems 2025.6.1带来了系统级CUDA追踪、CUDA主机函数追踪、默认的CUDA硬件追踪模式以及显示SM分配情况的Green Context时间轴行等新追踪功能[40] 核心数学库性能更新 - **cuBLAS性能提升**:CUDA 13.1增加了对FP4、FP8和BF16数据类型的性能支持[38] 并引入了一项全新的实验性API,支持Blackwell GPU的分组GEMM功能,兼容FP8和BF16/FP16数据类型,在MoE用例中,其设备端形状可实现最高4倍的加速,优于多流GEMM实现[40] - **cuSOLVER性能增强**:针对Blackwell架构,用于特征分解的批处理SYEVD与GEEV API带来了显著的性能提升[41] 例如,批处理SYEV在NVIDIA Blackwell RTX Pro 6000 Server Edition上,相比NVIDIA L40S实现了约2倍的加速[41] 对于GEEV函数,当矩阵行数n=30000时,加速比达到约1.7[45] - **cuSPARSE新API**:引入了一种新的稀疏矩阵向量乘法(SpMVOp)API,与CsrMV API相比性能有所提升,支持CSR格式、32位索引、双精度以及用户自定义的后缀[40] - **cuFFT设备API**:引入了一套全新的cuFFT设备API,提供主机函数用于查询或生成设备功能代码和数据库元数据,旨在提升cuFFTDx库的性能[40] CUDA核心计算库(CCCL)更新 - **确定性浮点运算选项**:NVIDIA CCCL 3.1为`cub::DeviceReduce`提供了额外的浮点确定性选项,允许用户在确定性和性能之间进行权衡[49] - **更便捷的单相CUB API**:为一些接受内存资源的CUB算法添加了新的重载,使用户可以跳过繁琐的临时存储查询、分配和释放的两阶段调用模式,简化了API使用[51][52]
GPU编程“改朝换代”:英伟达终为CUDA添加原生Python支持,百万用户变千万?
36氪· 2025-04-08 19:28
英伟达CUDA对Python的原生支持战略 - 公司明确将Python提升为CUDA并行编程框架中的“一等公民”,并宣布CUDA工具包将为Python提供原生支持和全面集成 [1] - 公司将2025年定为“CUDA Python元年”,此观点已成为内部共识及GTC大会的核心主题之一 [1] - 开发人员现可直接使用Python在GPU上执行算法式计算,无需掌握C或C++等底层语言 [1] 行业背景与现有解决方案 - 过去英伟达主要依赖C和C++作为编程接口,开发者需在此基础上构建更高级的Python库(如PyTorch)以实现应用 [2] - OpenAI的Triton等项目允许开发者用特定风格的Python编写代码,再通过编译器转化为GPU可运行的内容,表明在GPU编程Python化方向已有先行者 [2] - 这些第三方库的广泛应用在某些方面甚至超越了英伟达自家的解决方案 [2] 战略动机与生态影响 - CUDA架构师指出,Python开发者生态的用户规模已从百万级别增长至千万级别,底层的改进将通过Python生态系统产生更广泛的影响 [3] - 公司的整体愿景是为Python开发者提供完整的NVIDIA体验,使整个CUDA生态系统都能通过Python进行访问和使用 [3] - 此举并非放弃C++,而是在扩大开发者圈层,特别是显著加大对Python社区的支持 [4] 技术实现与开发者体验 - 公司强调Python中的CUDA应保持自然的Python风格,而不仅仅是语法转换,让开发者能轻松创建运行在GPU上的AI程序 [5] - 例如CuTile提供了比传统CUDA更高层级的抽象,开发者接触的接口完全是Python,无需直接使用C++ [5] - 新的Python接口版本Cutlass允许开发者直接在Python中构建算子和进行低级优化,同时保留原有性能 [6] 分层生态系统构建 - 公司正在构建一个分层的开发者生态系统金字塔:底层是核心CUDA C++,中间层是面向专业开发者的高性能Python接口(如Triton、Python Cutlass),顶层是面向AI构建者的抽象层(如PyTorch) [6] - 这种分层方式支持开发者从顶层工具快速原型设计逐步深入到底层接口,实现了GPU编程的“民主化”,使熟悉Python但不精通系统编程的人也能参与 [6] - 布道师认为这降低了AI开发者、研究者和初创公司的门槛,无需专门的CUDA工程师团队即可充分发挥GPU性能 [7] 技术栈整合与性能优化 - CUDA Python项目围绕即时(JIT)编译构建,减少了技术栈中的依赖项数量,旨在实现无需脱离Python环境的端到端GPU加速 [9] - 公司已构建基础Python绑定、cuPyNumeric(NumPy的GPU替代方案)等组件,仅变更一条导入指令即可将NumPy代码从CPU运行转为GPU运行 [9] - 通过将Python代码链接到经过微调的C++底层代码,新实现的性能影响几乎可以忽略不计 [12] 新型编程模型CuTile - CuTile编程模型添加了在GPU上执行且与高级别抽象一致的编码层,其设计更契合Python特性,使程序员关注数组而非线程 [13][15] - 该模型将问题拆分成tiles在GPU上处理,编译器能更好地将数组操作映射至GPU,在保持高性能的同时使代码更易于理解和调试 [15][16] - 编译器因其对开发者意图和GPU运行细节的深刻理解,通常能比程序员做得更好 [17] 未来扩展计划 - 在提升Python为核心语言的同时,公司也在积极招募程序员,以支持包括Rust和Julia在内的更多编程语言 [8]