英伟达CUDA太难!OpenAI出手要取代它,新语言性能相当但编程更简单

Posted QbitAl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了英伟达CUDA太难!OpenAI出手要取代它,新语言性能相当但编程更简单相关的知识,希望对你有一定的参考价值。

晓查 发自 凹非寺
量子位 报道 | 公众号 QbitAI

用CUDA为GPU编程实在太难了。

为了让没有CUDA编程经验的人写出和专家效率相当的GPU代码,现在OpenAI推出了一种新的语言和编译器——Triton

它的难度比CUDA低,但是性能却可与之相媲美。

OpenAI声称:

Triton只要25行代码,就能在FP16矩阵乘法shang上达到与cuBLAS相当的性能。

OpenAI的研究人员已经使用Triton,来生成比同等Torch效率高出1倍的内核。

Triton项目的负责人Philippe Tillet说:“我们的目标是使Triton成为深度学习CUDA的可行替代方案。”

25行代码实现最佳性能

Triton起源于Tillet在2019年学术会议MLPF上的一篇论文,当时他还是哈佛大学的一名研究生。

Tillet解决的问题是如何开发一种cuDNN更具表现力的语言,既能够处理神经网络中涉及的矩阵的各种操作,同时兼具可移植性且以及和cuDNN相媲美的性能。

现代GPU大致分为三个主要组件——DRAM、SRAM、ALU,对这些资源进行调度管理十分复杂,即便是熟悉CUDA的程序员

Triton可以将这些优化过程完全自动化,让开发者可以更好地专注于并行代码的高级逻辑。

以矩阵乘法为例,能够为逐元素运算和归约编写融合内核很重要,但考虑到神经网络中矩阵乘法任务的重要性,这还不够。

Triton非常适合这些应用,只需约25行Python代码即可实现最佳性能。

而另一方面,在CUDA中实现类似的过程需要花费更多的精力,甚至可能会降低性能。

手写矩阵乘法内核的一个重要优点是它们可以根据需要进行定制,以适应其输入和输出的融合变换。

如果没有Triton,对于没有特殊GPU编程经验的开发者来说,矩阵乘法内核的修改是非常困难的。

Triton背后的原理

Triton 的良好性能,来自于以Triton-IR为中心的模块化系统架构,这是一种基于LLVM的中间表示。

@triton.jit decorator通过遍历提供Python函数的抽象语法树(AST),产生的Triton-IR使用通用SSA构建算法上的动态。

生成的IR代码随后由编译器后端进行简化、优化和自动并行化,然后转换为高质量的LLVM-IR(最终转换为 PTX)。

研究人员发现,数据可以通过查看计算密集型块级操作(例如tl.dot)的操作数自动存储到共享内存中,并使用标准活性分析技术进行分配/同步。

另一方面,Triton程序可以通过同时执行不同的内核实例跨SM进行高效和自动并行化,以及通过分析每个块级操作的迭代空间,并在不同的SIMD中进行充分分区将SM内单元并行化。

目前Triton仅适用于英伟达GPU,但官方表示AMD GPU以及CPU的版本正在开发中。

开源地址:
https://github.com/openai/triton

论文:
https://dl.acm.org/doi/abs/10.1145/3315508.3329973

以上是关于英伟达CUDA太难!OpenAI出手要取代它,新语言性能相当但编程更简单的主要内容,如果未能解决你的问题,请参考以下文章

查看英伟达显卡对CUDA版本的支持

Cuda 内核代码驻留在英伟达 GPU 上的啥位置?

如何在kali linux中安装英伟达内核模块cuda和pyrit

[人工智能-深度学习-38]:英伟达GPU CUDA 编程框架简介

对于在英伟达JETPACK平台容器内使用cuda以及编译apollo工程的问题

英伟达4070Ti 6499元起/ 微软要推出ChatGPT版Bing/ 苹果头显被曝售价3000美元... 今日更多新鲜事在此...