首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >NVIDIA cuTile这么好,你的GPU支持么?

NVIDIA cuTile这么好,你的GPU支持么?

作者头像
GPUS Lady
发布2025-12-21 14:19:15
发布2025-12-21 14:19:15
3670
举报
文章被收录于专栏:GPUS开发者GPUS开发者

2025年,NVIDIA推出CUDA 13.1版本,其中最引人注目的创新是NVIDIA CUDA Tile(简称Cutile)。这一技术标志着自2006年CUDA平台诞生以来最大的技术突破,通过引入基于Tile的虚拟指令集,为GPU并行编程开辟了全新维度。

Tile-based Programming:超越SIMT的范式革新

传统CUDA采用单指令多线程(SIMT)模型,开发者需精细控制线程执行细节以实现高性能。这种模式虽赋予最大灵活性,但跨架构优化成本高昂。Cutile通过Tile-based编程范式重构了这一逻辑——开发者只需定义数据块(Tile)及计算逻辑,编译器与运行时系统将自动处理元素级执行细节。这种抽象化设计使代码天然兼容当前及未来的Tensor Core架构,包括第三代Tensor Core的动态稀疏性支持和第四代Tensor Core的混合精度计算能力。

cuTile Python代码是什么样子?

以下示例展示了向量加法——这是CUDA中典型的入门内核,但此处采用了cuTile进行基于分块的编程。该示例利用一维分块(tile)实现两个一维向量的相加。

本示例体现了cuTile内核的通用结构:

  • 从GPU内存加载一个或多个分块(tile)
  • 对分块执行计算操作,生成新的分块
  • 将生成的分块写回GPU内存

具体到本例:内核从向量a和b加载分块,生成名为a_tile和b_tile的分块。这两个分块相加后形成第三个分块(命名为result)。最后一步,内核将结果分块存储到输出向量c中。

代码语言:javascript
复制
# SPDX-FileCopyrightText: Copyright (c) <2025> NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
"""
Example demonstrating simple vector addition.
Shows how to perform elementwise operations on vectors.
"""
import cupy as cp
import numpy as np
import cuda.tile as ct
@ct.kernel
def vector_add(a, b, c, tile_size: ct.Constant[int]):
    # Get the 1D pid
    pid = ct.bid(0)
    # Load input tiles
    a_tile = ct.load(a, index=(pid,), shape=(tile_size,))
    b_tile = ct.load(b, index=(pid,), shape=(tile_size,))
    # Perform elementwise addition
    result = a_tile + b_tile
    # Store result
    ct.store(c, index=(pid, ), tile=result)
def test():
    # Create input data
    vector_size = 2**12
    tile_size = 2**4
    grid = (ct.cdiv(vector_size, tile_size), 1, 1)
    a = cp.random.uniform(-1, 1, vector_size)
    b = cp.random.uniform(-1, 1, vector_size)
    c = cp.zeros_like(a)
    # Launch kernel
    ct.launch(cp.cuda.get_current_stream(),
              grid,  # 1D grid of processors
              vector_add,
              (a, b, c, tile_size))
    # Copy to host only to compare
    a_np = cp.asnumpy(a)
    b_np = cp.asnumpy(b)
    c_np = cp.asnumpy(c)
    # Verify results
    expected = a_np + b_np
    np.testing.assert_array_almost_equal(c_np, expected)
    print("✓ vector_add_example passed!")
if __name__ == "__main__":
    test()

如下面所示,在命令行中运行此命令。如果一切设置正确,测试将输出示例已通过的信息。

代码语言:javascript
复制
$ python3 samples/quickstart/VectorAdd_quickstart.py
✓ vector_add_example passed!

如需运行更多cuTile Python示例,可直接调用这些示例来运行:

代码语言:javascript
复制
$ python3 samples/FFT.py
# output not shown

您还可以使用pytest来运行所有示例:

代码语言:javascript
复制
$  pytest samples
========================= test session starts =========================
platform linux -- Python 3.12.3, pytest-9.0.1, pluggy-1.6.0
rootdir: /home/ascudiero/sw/cutile-python
configfile: pytest.ini
collected 6 items
samples/test_samples.py ......                                  [100%]
========================= 6 passed in 30.74s ==========================

运行cuTile Python的条件是什么?

NVIDIA cuTile Python官方手册里写得很明白:

问题来了,什么样的GPU卡计算能力是10.X或者12.X的呢?

让我们来查一下查:

我们发现了什么?最新版本的Jetson Thor以计算能力11.0,完美地错过了cuTile。甚至连NVIDIA H100和H200,这样浓眉大眼的芯片,也完美错过....

但是NVIDIA GB10系统的用户可以拍手了!

手里有50系列GPU卡的用户也可以松一口气了!

不管怎么说,这种设计哲学与CUDA-X数学库、CUTLASS高性能计算库形成互补,构建起从底层硬件抽象到高层算法优化的完整生态。随着AI工作负载持续向多模态、大参数方向发展,Cutile代表的Tile-based编程范式将成为释放下一代GPU算力的关键技术支柱。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tile-based Programming:超越SIMT的范式革新
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档