OpenAI 的 Triton 与 Nvidia CUDA 有何不同?

在这里插入图片描述
OpenAI 揭幕 一种新的编程语言 Triton 2.1。这使没有CUDA经验的研究人员可以编写高效的GPU代码。

OpenAI 的博文称:"GPU 编程非常复杂。虽然最近出现了各种系统来简化这一过程,但我们发现这些系统要么过于繁琐,要么缺乏灵活性,要么生成的代码明显比我们手工调整的基线慢。

CUDA vs Triton

在本文中,我们将探讨 OpenAI Triton 与英伟达 CUDA 之间的主要区别。 但在此之前,我们先来看看 GPU 的基本架构,如下图所示。

在这里插入图片描述
GPU 架构(来源:OpenAI) 现代 GPU 由三个主要部分组成: DRAM、SRAM 和 ALU–在优化 CUDA 代码时,必须考虑到每一个组件:

  • 从 DRAM 传输内存必须融合到大型事务中,以充分利用现代内存接口的大总线宽度。
  • 数据在重新使用和管理之前会手动上载到 SRAM,以尽量减少检索时的共享内存库冲突。
  • 必须在流式多处理器 (SM) 之间和内部对计算进行仔细分区和调度,以促进指令/线程级并行性,并充分利用专用 ALU(张量核)

OpenAI 博客称:"即使对于拥有多年经验的资深 CUDA 程序员来说,对所有这些因素进行推理也是一项挑战。 不过,Triton 已经自动完成了此类优化,因此开发人员可以专注于并行代码的高级逻辑。“

Triton 不会自动安排 SM 之间的工作,重要的算法考虑因素由开发人员自行决定。 算法考虑因素可能包括平铺、AM 间同步等。

在这里插入图片描述
来自Openai

CUDA

于 2007 年发布,作为英伟达™(NVIDIA®)公司专有的 GPU 计算平台,CUDA 可用于所有英伟达™(NVIDIA®)GPU。 它包括第三方库和集成、基于指令的 OpenACC 编译器以及 CUDA C/C++ 编程语言。

如今,速度最快的十台超级计算机中有五台使用了英伟达™(NVIDIA®)图形处理器,其中九台具有极高的能效。 CUDA 在其设备驱动程序中实现,但编译器(nvcc)和库则打包在 CUDA 工具包和软件开发工具包(SDK)中。 它包含许多用例和库,以及英伟达™(NVIDIA®)Nsight(微软Visual Studio和Eclipse(Linux)的扩展),用于交互式GPU剖析和调试。

NVIDIA Nsight 提供代码高亮、应用程序的统一 GPU 和 CPU 跟踪以及 GPU 瓶颈的自动识别功能。 NVIDIA Visual Profiler 是一款独立的跨平台应用程序,用于剖析 CUDA 程序,还有用于调试和内存检查的 CUDA 版本。

Triton 与 CUDA 有什么不同?

2019 年,哈佛大学的研究人员在一篇题为《Triton: Triton: An Intermediate Language and Compiler for Tiled Neural Network Computations》的论文中,阐述了 CUDA 与 Triton 编程模型之间的区别。

在 GPU 上执行 CUDA 代码由 SPMD 编程模型支持,其中每个内核都与启动网格中的一个可识别线程块相关联。 Triton 编程模型的工作方式与此相同,但每个内核都是单线程的(不过会自动并行化),并与一组全局范围相关联,这些全局范围因实例而异。

这种方法导致内核更加简单,其中不存在类似于 CUDA 的并发基元。 并发基元包括共享内存同步、线程间通信等。

在这里插入图片描述
Triton 与开源 JIT 编译器 Numba 相似,后者可将 Python 和 NumPy 的子集翻译成快速机器代码。 在 Numba 中,内核被定义为经过装饰的 Python 函数,并在不同实例中同时启动。

总结

深度学习的研究思路通常是利用原生框架算子的组合来实现的。 然而,这种方法需要许多临时张量,这会影响神经网络的大规模性能。 专门的 GPU 内核可以解决这些问题。 但由于 GPU 编程的复杂性,管理起来非常困难。

Triton 可自动优化专用内核,并将其转换为可在英伟达™(NVIDIA®)图形处理器上执行的代码。 编译器目前使用块级数据流分析(一种根据目标程序的控制和数据流结构静态调度迭代块的技术)来解决调度难题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值