英伟达终为 CUDA 添加原生 Python 支持,他有什么目的?

CUDA原来只支持C/C++/Fortran,在2025的CES上宣布支持原生Python其实是不得已而为之,一方面现在Python的AI开发者数量过于庞大,达到数千万级别,而CUDA仅几百万,CUDA想扩大自己的用户圈子,只能拉Python入伙。

另一方面,Python生态的计算库实在太强大,比如numpy,几乎垄断了数组计算,还有像scipy、keras等,已经成为机器学习的主流工具,CUDA必须要兼容这些Python库,因此推出了numpy的cuda接口cuPyNumeric​,以及能涵盖scipy功能的计算库nvmath​,这些都是CUDA为了融入Python而做的工作。再加上现在即时编译技术JIT的成熟,比如numba库,Python代码能实时的编译为CUDA的PTX指令,消除了Python和GPU编程之间的障碍。

比如cuPyNumeric​已经100%支持Numpy API。

# 原生支持前(使用 CPU)
import numpy as np
x = np.random.rand(1000, 1000)
y = np.linalg.inv(x)

# 原生支持后(GPU 加速)
import cupy.numeric as np  # 仅替换导入
x = np.random.rand(1000, 1000)
y = np.linalg.inv(x)  # 自动在 GPU 执行[2,6]

nvmath能实现Python各种数学计算。

import nvmath
a = nvmath.array([1.0, 2.0], device='gpu')  # 指定 GPU
b = nvmath.sin(a) + nvmath.cos(a)  # 自动融合计算[5,6]

最后一点,可能也是最紧迫的原因,OpenAI推出的Triton正在一步步拉拢Python开发者,威胁CUDA的市场地位。这里解释下,Triton其实是CUDA的高级封装,也是GPU开发工具,但它能支持Python开发,将Python语言转化为CUDA语言,所以大家慢慢习惯在Triton使用Python做GPU开发。Triton甚至于想兼容除Nvidia之外的各种GPU,成为大一统的GPU编程平台。

你说,CUDA能不急吗?

既然Python在GPU编程领域这么吃香,那为什么CUDA不一开始就原生支持Python,偏要等有了竞争对手攻城才着急忙慌的宣布支持Python。

对Nvidia来说,既有技术上的障碍,也有商业上的考量。

首先是效率问题。CUDA是静态编译的GPU语言,其实就是机器语言,主打的直接快速,它早期支持C/C++/Fortran,也是因为这些语言是静态语言,而Python是动态语言,与GPU计算的要求有很大冲突,比如没办法及时类型推断、内存访问等,非常影响执行效率。另外Python是解释性语言,解释器开销比编译语言要大很多,还有全局解释器锁 (GIL)没办法真正并行,这些也都会降低CPU编程的效率,与CUDA的目的显得格格不入。

后来直到出现了PyCUDA、Numba,将Python代码即时编译为CPU能执行的机器代码才解决了这一问题。

其次Nvidia在CUDA设计之初是想把资源集中给更加商业能力更强、技术更成熟的C/C++/Fortran开发者,而当时的Python开发者其实对GPU编程的需求并不高,且Python由于语言本身的限制,如果集成到CUDA,投入的资源会非常大,而且回报率并不明朗。

但近几年Python在AI开发上的爆发式增长,以及后起之秀Triton的威胁,Nvidia开始投入大量资源集成Python,并在今年官宣加入Python大家庭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱卫军 AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值