深入解析NVIDIA CUDA Tile:面向GPU的平铺编程新范式

随着CUDA 13.1的发布,该平台引入了自2006年诞生以来最重大的进展之一:NVIDIA CUDA Tile。这项令人兴奋的创新引入了一个面向基于平铺(Tile)的并行编程的虚拟指令集,其核心在于让开发者能够以更高的抽象级别编写算法,并屏蔽专用硬件(如张量核心)的细节。

为何为GPU引入平铺编程?

CUDA为开发者提供了一个单指令多线程(SIMT)的硬件和编程模型。这要求(并使得)开发者能够以最大的灵活性和特异性,精细地控制代码的执行方式。然而,编写出高性能的代码,尤其是在跨越多代GPU架构时,通常需要付出巨大的努力。

市面上已有许多库来帮助开发者挖掘性能,例如某中心的CUDA-X和CUTLASS。而CUDA Tile则引入了一种比SIMT更高级别的GPU编程新方式。

随着计算负载的演进,特别是在人工智能领域,张量已成为一种基本数据类型。某中心已开发出专门的硬件来对张量进行操作,例如某中心的张量核心(TC)和张量内存加速器(TMA),它们已成为每一代新GPU架构不可或缺的部分。

随着硬件变得越来越复杂,需要更多的软件来帮助驾驭这些能力。CUDA Tile抽象了张量核心及其编程模型,使得使用CUDA Tile编写的代码能够与当前及未来的张量核心架构兼容。

基于平铺的编程使您能够通过指定数据块(或称为“平铺”)来编写算法,然后定义在这些平铺上执行的计算。您无需在元素级别设置算法的执行方式:编译器与运行时将为您处理这些细节。

图1展示了CUDA Tile引入的平铺模型与CUDA SIMT模型在概念上的差异。

图1. 平铺模型(左)将数据划分为块,编译器将其映射到线程。SIMT模型(右)将数据同时映射到线程块和线程。

这种编程范式在Python等语言中很常见,像NumPy这样的库允许您指定矩阵等数据类型,然后用简单的代码指定并执行批量操作。在底层,正确的事情会自动发生,您的计算过程对您完全透明。

CUDA Tile IR:平铺编程的基础

CUDA Tile的基石是CUDA Tile IR(中间表示)。CUDA Tile IR引入了一套虚拟指令集,支持将硬件作为平铺操作进行原生编程。开发者可以编写更高级别的代码,这些代码能在多代GPU上高效执行,且只需极少改动。

虽然某中心的并行线程执行(PTX)确保了SIMT程序的可移植性,但CUDA Tile IR为CUDA平台扩展了原生的平铺程序支持。开发者专注于将他们的数据并行程序划分为平铺和平铺块,而让CUDA Tile IR来处理如何将这些映射到硬件资源上,例如线程、内存层次结构和张量核心。

通过提高抽象级别,CUDA Tile IR使用户能够为某中心硬件构建更高级别的、硬件特定的编译器、框架和领域特定语言(DSL)。对于平铺编程而言,CUDA Tile IR的作用类似于SIMT编程中的PTX。

需要指出的是,这并非非此即彼的选择。在GPU上进行平铺编程是编写GPU代码的另一种途径,但您不必在SIMT和平铺编程之间二选一;它们可以共存。当您需要SIMT时,您可以像往常一样编写您的内核。当您希望利用张量核心进行操作时,您可以编写平铺内核。

图2展示了CUDA Tile如何融入一个代表性的软件栈的高层示意图,以及平铺路径如何作为现有SIMT路径的一个独立但互补的路径存在。

图2. 编译的平铺路径(橙色)融入到整个软件栈中,与SIMT路径(蓝色)并行。

开发者如何使用CUDA Tile编写GPU应用

CUDA Tile IR位于绝大多数程序员与平铺编程交互的层面之下。除非您正在编写编译器或库,否则您可能不需要关心CUDA Tile IR软件的细节。

  • 某中心 cuTile Python:大多数开发者将通过诸如某中心 cuTile Python这样的软件与CUDA平铺编程交互——这是一个使用CUDA Tile IR作为后端的某中心Python实现。有一篇博客文章解释了如何使用cuTile-python,并附有示例代码和文档链接。
  • CUDA Tile IR:对于希望构建自己的DSL编译器或库的开发者,CUDA Tile IR是您与CUDA Tile交互的地方。CUDA Tile IR文档和规范包含了关于其编程抽象、语法和语义的信息。如果您正在编写一个当前以PTX为目标的工具/编译器/库,那么您可以调整您的软件,使其也能以CUDA Tile IR为目标。

视频1. 解析CUDA Tile的核心概念

如何获取CUDA Tile软件

CUDA Tile随CUDA 13.1一同发布。所有信息,包括文档链接、GitHub代码库和示例代码,均可在我们的CUDA Tile页面上找到。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值