用 Python 玩转 GPU 编程:NVIDIA cuTile 让你轻松上手 CUDA Tile!

用 Python 玩转 GPU 编程:NVIDIA cuTile 让你轻松上手 CUDA Tile!

用 Python 玩转 GPU 编程:NVIDIA cuTile 让你轻松上手 CUDA Tile!

在 Python 中借助 NVIDIA CUDA Tile 简化 GPU 编程

大家好!NVIDIA 在 CUDA 13.1 中推出了一项超级酷的功能——CUDA Tile,而这篇博客《在 Python 中借助 NVIDIA CUDA Tile 简化 GPU 编程》就是专门介绍它的 Python 版本 cuTile Python。简单说,它让 GPU 编程从“手动调优地狱”变成“像写 NumPy 一样简单”,特别适合 AI 和机器学习开发者。

NVIDIA CUDA 13.1 Powers Next-Gen GPU Programming with NVIDIA CUDA ...
developer.nvidia.com

Focus on Your Algorithm—NVIDIA CUDA Tile Handles the Hardware ...
developer.nvidia.com

(上图:CUDA 13.1 宣传图和 CUDA Tile 核心概念图)

为什么需要 cuTile?传统 GPU 编程太累了

传统 CUDA(SIMT 模型)需要你手动管理线程、内存、甚至 Tensor Cores 的调用。代码复杂,新 GPU 一出就得重写优化。

Simplify GPU Programming with NVIDIA CUDA Tile in Python | NVIDIA ...
developer.nvidia.com

Simplify GPU Programming with NVIDIA CUDA Tile in Python | NVIDIA ...

(上图:GPU 内存层次示意图,传统编程需要手动处理这些细节)

CUDA Tile 引入“Tile”(数据块)概念:你只需描述在数据块上做什么运算,编译器自动处理线程调度、内存迁移、硬件加速(如 Tensor Cores)。cuTile Python 让这一切在 Python 中实现!

Focus on Your Algorithm—NVIDIA CUDA Tile Handles the Hardware ...
developer.nvidia.com

Focus on Your Algorithm—NVIDIA CUDA Tile Handles the Hardware ...

(上图:Tile 编程模型示意图,开发者只需关注 Tile 运算)

cuTile Python 的神奇之处
  • 更高抽象:像 NumPy 一样写数组运算。
  • 自动优化:利用 Tensor Cores、共享内存、Tensor 内存加速器。
  • 前向兼容:代码无需修改,就能跑在未来 NVIDIA GPU 上。
  • 与传统 CUDA 共存:可以混合使用。

The Engine Behind AI Factories | NVIDIA Blackwell Architecture
nvidia.com

Inside NVIDIA Blackwell Ultra: The Chip Powering the AI Factory ...
developer.nvidia.com

(上图:NVIDIA Blackwell 架构,cuTile 的首发平台,专为 AI 设计)

实战:向量加法,只需几行代码!

博客对比了传统 SIMT 和 cuTile 的向量加法。

传统 CUDA C++ 版本(繁琐):

C++

__global__ void vecAdd(float* A, float* B, float* C, int vectorLength) { int workIndex = threadIdx.x + blockIdx.x * blockDim.x; if (workIndex < vectorLength) { C[workIndex] = A[workIndex] + B[workIndex]; } }

cuTile Python 版本(超级简单):

Python

import cuda.tile as ct @ct.kernel def vector_add(a, b, c, tile_size: ct.Constant[int]): pid = ct.bid(0) # Block ID a_tile = ct.load(a, index=(pid,), shape=(tile_size,)) b_tile = ct.load(b, index=(pid,), shape=(tile_size,)) result = a_tile + b_tile ct.store(c, index=(pid,), tile=result)

完整测试脚本:

Python

from math import ceil import cupy as cp import numpy as np import cuda.tile as ct # 上面的 kernel 定义... def test(): vector_size = 2**12 tile_size = 2**4 grid = (ceil(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) ct.launch(cp.cuda.get_current_stream(), grid, vector_add, (a, b, c, tile_size)) # 验证结果 np.testing.assert_array_almost_equal(cp.asnumpy(c), cp.asnumpy(a + b)) print("vector_add_example passed!") if __name__ == "__main__": test()

运行后会输出 “passed!”。

Simplify GPU Programming with NVIDIA CUDA Tile in Python | NVIDIA ...
developer.nvidia.com

Simplify GPU Programming with NVIDIA CUDA Tile in Python | NVIDIA ...

(上图:Nsight Compute 中的 Tile 性能分析截图,能看到 Tile 统计信息)

安装和要求(注意!)
  • pip install cuda-tile
  • 需要 CuPy 处理 GPU 数组:pip install cupy-cuda13x
  • 硬件:目前只支持 Blackwell GPU(计算能力 10.x/12.x,如 B200 或 RTX 50 系列)。旧卡(如 RTX 30/40)暂不支持,未来 CUDA 更新会扩展。
  • 驱动 R580+(完整工具需 R590+),CUDA Toolkit 13.1+。
总结:GPU 编程的 Python 新时代

cuTile Python 让开发者专注于算法创新,而不是硬件细节。特别适合 AI/ML 场景,未来会支持更多工作负载。

原博客链接(中文版,强烈推荐): 在 Python 中借助 NVIDIA CUDA Tile 简化 GPU 编程

官方资源:

文档:https://docs.nvidia.com/cuda/cutile-python/
GitHub 示例:https://github.com/nvidia/cutile-python

如果你有 Blackwell GPU,赶紧试试!否则,先学概念,等硬件升级后再玩。欢迎评论:你觉得 cuTile 会流行起来吗?🚀

Read more

Java外功精要(6)——Spring事务及其传播机制

Java外功精要(6)——Spring事务及其传播机制

1.概述 Spring事务管理是Spring框架中用于确保数据库操作 原子性、一致性、隔离性和持久性(ACID) 的核心机制。它通过声明式或编程式(本文略)方式管理事务,支持多种事务传播行为和隔离级别相较于编程式事务,声明式事务通过@Transactional注解实现事务管理,无需手动编写事务代码事务基本概念在全面解析MySQL(5)——“索引、事务、JDBC”三大核心一文中有介绍,本文不再赘述 2.@Transactional 作用:提供声明式事务管理。它简化了在应用程序中管理数据库事务的流程。开发者只需在方法或类上添加此注解,Spring框架就会自动处理事务的开启、提交和回滚,无需手动编写事务管理代码(如 begin、commit、rollback) 级别:类 + 方法作为类注解:为类中所有public方法添加注解作为方法注解:默认仅对public方法生效 @RequestMapping("/test")@RestController@Slf4jpublicclassTestController{privatefinalUserService userService;@A

Java 多态

Java 多态

文章目录 * 多态 * 向上转型和向下转型 * 向上转型和重写 * 重写和重载的区别 * 动态绑定和静态绑定 * 用代码来解释什么是多态 * 向下转型 * 多态的优点 * 总结 多态 1. 什么是多态?为什么要使用多态? 简单来说是多种形态,具体来说是去完成某个事情,当不同对象去完成同一件事表现出来的不同结果/状态 打个比方就是同一个人对待不同人表现出来的形态是不同的 2. 多态实现的三个条件: 向上转型和向下转型 向上转型和重写 1. 将子类对象给父类类型的引用 父类类型 对象名 = new 子类类型() 直接赋值的 classAnimal{publicString name;publicint age;publicAnimal(String name,int age){this.name = name;this.age = age;}// 父类中的this是当前对象的引用publicvoideat(){System.out.println(

jdk 17 下载

可从 Oracle 官方 JDK 17 下载页 直接获取适用于 Windows、macOS、Linux 的 JDK 17 安装包Oracle,链接:https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.htmlOracle 下载方式(按系统选择) 系统推荐下载链接备注WindowsWindows x64 安装包Oracle双击运行安装,适合大多数用户macOS IntelmacOS x64 DMGOracle直接安装macOS Apple SiliconmacOS arm64 DMGOracleM1/M2 芯片适用Linux x64Linux x64 压缩包Oracle解压后配置环境变量Linux ARM64Linux arm64 压缩包Oracle树莓派等设备适用 安装与验证 1. 下载 对应系统安装包。 2.

计算机毕设 java 基于 vue 框架的动漫视频网站 基于 SpringBoot+Vue 的动漫资源分享平台 Java 动漫视频播放与交流论坛系统

计算机毕设 java 基于 vue 框架的动漫视频网站 基于 SpringBoot+Vue 的动漫资源分享平台 Java 动漫视频播放与交流论坛系统

计算机毕设 java 基于 vue 框架的动漫视频网站 6ygmo9(配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享 随着互联网技术的飞速发展和动漫文化的普及,传统动漫视频传播方式存在资源分散、交流不便等问题,难以满足用户对动漫资源高效获取与互动交流的需求。搭建一个集中化、信息化的动漫视频网站,成为整合动漫资源、提升用户体验的重要举措。 系统核心功能涵盖个人信息修改、用户管理、视频分类管理、动漫视频管理、交流论坛、系统管理等模块。支持用户注册登录与个人信息维护,可浏览、搜索动漫视频并进行收藏、评论互动;能对动漫视频进行分类管理,包括视频编号、名称、分类、封面、发布日期等信息维护;交流论坛支持用户发布帖子、回复互动;系统管理包含公告信息、轮播图、关于我们等基础配置维护。这些功能全面覆盖了动漫视频从资源展示、分类管理到用户互动的全流程,实现了动漫资源的系统化整合与高效传播,为动漫爱好者提供了便捷的资源获取与交流平台。 注:以上是纯毕业设计介绍,

阿里云全品类 8 折券限时领,建站 / AI / 存储通用 立即领取