Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CUDA工具集合与Python深度集成:重塑GPU编程新体验

CUDA工具集合与Python深度集成:重塑GPU编程新体验

作者头像
GPUS Lady
发布于 2025-04-02 05:35:36
发布于 2025-04-02 05:35:36
2050
举报
文章被收录于专栏:GPUS开发者GPUS开发者

接上一篇:

CUDA技术栈的17年进化论:从雏形到生态巨擘

实际上,CUDA的奥秘在于它并非单一工具,正如Jensen几小时前在主题演讲中提到的,它是我们长期积累的庞大工具集合,可灵活应用于各类问题。过去一两年,我们重点推进的一项工作是将加速Python深度集成到CUDA堆栈中。因为CUDA本身并非孤立工具,Python也不能仅停留在表面——我们不仅需要内核编写能力,更需要完整的工具链支持,从上到下无缝衔接。例如,你既需要能将内核嵌入PyTorch,也需调用Python生态的各类库。

从许多角度看,所有组件必须协同工作,如同传统平台一样,在Python生态中实现从顶层到底层的完整支持。有趣的是,编译层在此图中未显式出现,因为Python本质依赖即时编译(JIT),其语言设计围绕动态性展开,无需传统构建系统(如Makefile)。你只需导入依赖项即可运行,但这也使得Python的依赖管理变得复杂。

用户反馈中常听到的声音是: 在使用Python时,他们安装了各种包,但理清依赖关系却异常困难。因此,在Python生态中,保持各层之间的互操作性将极大地提升生产力,让Python的易用性得以充分发挥。今年在CUDA技术大会(GTC)上,我们精心策划了一系列关于CUDA与Python的专题演讲。我在本次演讲的末尾也会提供一个索引,方便大家查看即将呈现的内容。

如果你对GPU的原生Python编程感兴趣, 我们准备了大量资料,逐步指导你完成不同阶段的任务。不过,我先为大家简要总结一下我们已完成的工作、我们的思考方式,以及我们正在进行的关键投资。

在我看来,Python化的CUDA 绝不仅仅是将C语言翻译成Python语法。它必须让Python开发者感到自然,符合他们的直觉。我在设计CUDA的任何功能时,都遵循一个基本原则:如果用户不完全了解其工作原理,仅凭猜测也应该大致正确,而不会感到意外。因此,Python化的CUDA不应看起来像C语言,而应保持Python的风格。

几年前, 我们从初始的Python绑定代码开始,例如CuPy,它可与我们的底层驱动进行接口交互,实现了Python绑定与底层的一一映射。但过去一年中,我们构建了更强大的工具——CUDA Core。CUDA Core是对CUDA运行时的Python化重塑,旨在实现自然且原生的Python集成。这意味着不仅仅是接口层面的改变,更包括执行流程和运作方式的全面革新。Python完全基于JIT(即时编译)构建,你无需退出进程或使用命令行编译器,即可实现全流程的Python操作。

这种改变的一个有趣之处在于, 它显著减少了GPU编程中的Python依赖树数量,从而助力我们之前展示的“上下技术栈”图景。当然,没有工具支持的软件是不完整的。如果你无法检测、识别和分析代码中的行为,那么一切努力都将付诸东流。因此,我们在过去几年中大力投入,并持续为Python开发者添加更多开发工具,包括性能分析器、代码分析器,以及代码注释功能,使注释内容能显示在编译器中(例如通过NVTX)。

上图顶部展示的就是其中一个示例, 我们甚至集成了对PyTorch层的支持。你可以直接从PyTorch程序中获取低层级的Python跟踪信息。除了核心的Python基础功能外,关键在于如何用Python编程GPU。这正是我们的目标——让你的程序和代码在Python环境中实现GPU加速,而无需退出Python环境。为此,我们提供了一系列不同的解决方案。

我们介绍一个名为cuPyNumeric的东西。cuPyNumeric是NumPy的一个一对一无缝替代库。而NumPy是Python中最广泛使用的计算库,

只需简单地更改导入指令,你所有的数值计算代码就会从在CPU上运行转变为在GPU上运行,而且不仅仅是在单个GPU上运行,它还能扩展到数千个GPU,所以,在我的小例子中,我不仅更改了导入指令,还将数组大小平方,然后它会向外扩展并在千节点集群上运行。

现在,很多CUDA编程,当你在脑海中思考CUDA编程时,你不仅仅是在想我要用Python,然后神奇地让它自动为你加速。这确实是一件很酷的事情,但如果你真的想自己编写代码并调用并行CUDA代码,那么一直以来,最常见获得CUDA的方式都是通过库,

说实话,你所需要编写的90%的代码,NVIDIA都已经为你准备好了。

因此,我们选取了一系列库,并将它们整合到一个名为Nvmath Python的包中。当然,它意味着Python风格的接口,但同时也是统一的接口。它同时包含主机侧接口,你可以从普通的CPU代码中调用这些库,以及设备侧接口, 这样你就可以将这些加速算法直接插入到你正在编写的Python内核中。

此外,它还大量借助或依赖于即时编译,在性能方面,如果一个库在知道你的数据类型、数据大小等情况下能够高效地工作,那么将库调用融合在一起的能力将带来性能上的巨大提升和显著差异。

由于Python是一种原生支持即时编译的语言,我们构建了Python数学库,以充分利用这一点。因此,你可以自然地通过库提供的API即时编译这些内容。

最后,这些库不仅仅是GPU库,Python可以在各种不同的系统上运行,因此,同一个库包可以引导执行到CPU, 无论是通过NVIDIA针对ARM的性能库,还是通过与Intel MKL库的接口来支持x86架构。它在数组类型等方面与许多现有的张量库进行互操作,

重要的是,你还可以插入我们库原生支持的多GPU扩展功能,所有这些都集中在一个标题下,通过Python包装器,能够帮助你决定并调度你所需的功能到你想去的地方。而且,它已经取得了巨大的成功。

(未完待续)

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
GPU 编程“改朝换代”:英伟达终为 CUDA 添加原生 Python 支持,百万用户变千万?
今年,英伟达可谓是全力押注,明确表示要确保 Python 成为 CUDA 并行编程框架中的“一等公民”。
深度学习与Python
2025/04/09
1920
GPU 编程“改朝换代”:英伟达终为 CUDA 添加原生 Python 支持,百万用户变千万?
CUDA Python的「黄金三角」:PyTorch+RAPIDS+CuPy如何重构科学计算
当我们在讨论这个主题时——大家可以看到CUDA Python生态中层层叠叠的各个组件:从顶层的框架与SDK,一直延伸到需要直接操作硬件的CUDA内核开发层。实际上这里的组件远不止幻灯片上能展示的数量,但我们可以将其视为开发者工具箱,这些工具需要组合使用才能构建出GPU加速的Python程序。
GPUS Lady
2025/04/18
820
CUDA Python的「黄金三角」:PyTorch+RAPIDS+CuPy如何重构科学计算
CUDA编程革命:cuTile分块计算赋能高效GPU开发
当遇到库中缺少所需功能的情况时(这种情况可能占开发时间的10%甚至1%),或者需要将不同代码模块粘合时,我们提供了多个解决方案。
GPUS Lady
2025/04/09
1490
CUDA编程革命:cuTile分块计算赋能高效GPU开发
Facebook发布PyTorch 1.1,开源AI模型优化简化工具BoTorch & Ax
Facebook F8 大会主要面向围绕该网站开发产品和服务的开发人员及企业家,大会通常包括主题演讲以及 Facebook 新产品、新工具的发布。其名称源自 Facebook 的 8 小时黑客马拉松竞赛。
机器之心
2019/05/14
8240
Facebook发布PyTorch 1.1,开源AI模型优化简化工具BoTorch & Ax
nvmath Python革命:如何让CUDA数学库易用?
接上一篇:CUDA Python的「黄金三角」:PyTorch+RAPIDS+CuPy如何重构科学计算
GPUS Lady
2025/04/18
670
nvmath Python革命:如何让CUDA数学库易用?
一行代码12倍加速Bert推理,OpenAI编程语言加持的引擎火了
一行代码的威力到底有多大?今天我们要介绍的这个 Kernl 库,用户只需一行代码,在 GPU 上就能以快几倍的速度运行 Pytorch transformer 模型,从而极大的加快了模型的推理速度。
机器之心
2022/12/15
7090
一行代码12倍加速Bert推理,OpenAI编程语言加持的引擎火了
CUDA vs OpenCL:GPU 编程模型该如何选?
近年来,GPU(图形处理单元)已从最初的图形渲染专用硬件,发展成为高性能计算领域的“加速器”,为各类计算密集型任务提供了强大的并行计算能力。GPU 编程,即利用 GPU 的并行架构来加速应用程序的执行,已成为推动科学计算、人工智能、大数据等领域快速发展的重要驱动力。
Luga Lee
2024/11/01
1K0
CUDA vs OpenCL:GPU 编程模型该如何选?
首个GPU高级语言,大规模并行就像写Python,已获8500 Star
经过近 10 年的不懈努力,对计算机科学核心的深入研究,人们终于实现了一个梦想:在 GPU 上运行高级语言。
机器之心
2024/05/22
2040
首个GPU高级语言,大规模并行就像写Python,已获8500 Star
Rust 与 GPU 编程的现状与前景探究
话说,程序员三大浪漫,操作系统、编译器和图形处理。Rust 语言已经攻陷了其中两大浪漫,操作系统和编译器,那么图形处理呢?Rust 语言还能“浪”起来吗?
张汉东
2023/11/20
3.9K0
Rust 与 GPU 编程的现状与前景探究
深度学习|如何确定 CUDA+PyTorch 版本
对于深度学习初学者来说,配置深度学习的环境可能是一大难题,因此本文主要讲解CUDA; cuDNN; Pytorch 三者是什么,以及他们之间的依赖关系。
数据科学工厂
2023/09/28
11.3K0
深度学习|如何确定 CUDA+PyTorch 版本
NumPy 高级教程——GPU 加速
在处理大规模数据集或进行复杂计算时,利用 GPU 进行加速是一种常见的优化手段。NumPy 提供了一些工具和技术,可以方便地在 GPU 上执行计算。在本篇博客中,我们将深入介绍 NumPy 中的 GPU 加速,并通过实例演示如何应用这些技术。
Echo_Wish
2024/01/09
2.2K0
刚刚,英伟达发布新规:其他硬件禁止使用CUDA!
在安装CUDA 11.6及更高版本时,最终用户许可协议(EULA)中明确表示:禁止在其他硬件平台上通过翻译层运行基于CUDA的软件!
新智元
2024/03/13
3920
刚刚,英伟达发布新规:其他硬件禁止使用CUDA!
DeepSeek-R1自写CUDA内核跑分屠榜!斯坦福学霸狂飙GPU编程自动化挑战人类
近日,来自斯坦福和普林斯顿的研究者发现,DeepSeek-R1已经能生成自定义CUDA内核了,而且还在一众推理模型中,直接拿下了TOP 1!
新智元
2025/02/28
830
DeepSeek-R1自写CUDA内核跑分屠榜!斯坦福学霸狂飙GPU编程自动化挑战人类
又双叒叕有公司想打破Nvidia垄断?这回让CUDA代码直接编译运行于AMD GPU
AMD一直在努力弥合由Nvidia的CUDA主导地位所造成的差距,特别是在针对PyTorch等AI项目方面。同时,众多工具也纷纷加入这一行列,共同挑战Nvidia的权威地位。
GPUS Lady
2024/07/19
4160
前端如何开始深度学习,那不妨试试JAX
在深度学习方面,TensorFlow 和 PyTorch是绝对的王者。但是,但除了这两个框架之外,一些新生的框架也不容小觑,比如谷歌推出的 JAX深度学习框架。
xiangzhihong
2022/07/30
1.8K0
前端如何开始深度学习,那不妨试试JAX
CUDA与OpenCL:并行计算革命的冲突与未来
本文翻译自:《CUDA vs OpenCL vs Metal : The Battle for GPU Acceleration Supremacy》
GPUS Lady
2024/05/17
2.3K0
CUDA与OpenCL:并行计算革命的冲突与未来
NeurIPS顶会接收,PyTorch官方论文首次曝光完整设计思路
论文地址:https://papers.nips.cc/paper/9015-pytorch-an-imperative-style-high-performance-deep-learning-library.pdf
机器之心
2019/12/06
1.4K0
有了Julia语言,深度学习框架从此不需要计算图
鉴于机器学习(ML)对编程语言、编译器和生态系统的众多需求,现在已经有很多有趣的发展。不仅 TensorFlow 和 PyTorch 等现有系统间的权衡得不到解决,而且这两个框架都包含不同的「静态图」和「eager execution」接口,但它们的形式已经比以前更加清晰。与此同时,机器学习模型基本上是可微分算法的思想(通常称为可微分编程)已经流行起来。
机器之心
2018/12/25
1.2K0
有了Julia语言,深度学习框架从此不需要计算图
NVIDIA希望有更多支持CUDA的编程语言
CUDA 并行计算平台可以使用 C++、Fortran 和 Python 进行编程,但该公司正在寻找其他人来运行其 GPU。
云云众生s
2024/03/29
1660
Python CUDA 编程 - 2 - Numba 简介
官方文档:http://numba.pydata.org/numba-doc/latest/reference/pysupported.html
为为为什么
2022/08/04
1.2K0
Python CUDA 编程 - 2 - Numba 简介
推荐阅读
相关推荐
GPU 编程“改朝换代”:英伟达终为 CUDA 添加原生 Python 支持,百万用户变千万?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档