晓查 发自 凹非寺
量子位 报道 | 公众号 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出手要取代它,新语言性能相当但编程更简单相关推荐

  1. 解决英伟达CUDA和cuDNN下载过慢的问题

    文章目录 为什么会慢 为什么会快 怎么加速下载英伟达CUDA和cuDNN 推荐下载工具-2021-01-19更新 为什么会慢 英伟达开发者网站最近的服务器位于日本东京,带宽也是很感人的. 可以看到下载 ...

  2. 英伟达联手Arm CPU打造AI超算,百万兆级性能,主攻气候变化和核武建模

    雷刚 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI超算怎么搞?老黄祭出联谊招. 在国际超算大会上,英伟达宣布正式支持Arm CPU,为高性能计算行业开辟了一条全新途径,以构建具有极高能 ...

  3. 英伟达CUDA 10终于开放下载了

    栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI 英伟达的CUDA 10工具包,终于可以下载了. 与9字头的前辈相比,10.0是第一次为图灵GPU定制的版本. 英伟达新近发布的GeForce ...

  4. AI大牛周伯文加入清华电子系,英伟达预警“矿难”来袭,小冰成立游戏工作室,今日更多大新闻在此...

    日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好,今天是5月30日星期一. 这周只用上四天,就迎来不!用!调!休!的端午假期了. 今天科技圈有哪些值得关注的新闻? 一起来看. 今日大新闻 ...

  5. 软硬件解耦太难!英伟达竟“越来越像Mobileye”

    尽管Mobileye已经愿意推行"软硬件解耦",但由于车企自己目前还没有能力搞定算法,Mobileye便"不得不"又回到软硬一体化的老路上. 随着软件能力越来越 ...

  6. 黄仁勋没有回应,英伟达没有新品

    晓査 乾明 假装发自 苏州 量子位 出品 | 公众号 QbitAI 黄仁勋上台,然后下台. 在今天上午的GTC China大会上,黄教主没能拿出让人惊艳的新品,也没有只字片语回应英伟达的目前的&quo ...

  7. 用“AI核弹”饱和攻击的英伟达,如何赢下AI计算新赛场?

    在2012年的ImageNet挑战赛(ILSVRC)上,深度卷积神经网络AlexNet横空出世,在图像分类识别领域实现了质的飞跃,被认为是AI时代的标志性事件,代表着深度学习时代的正式开端. 在此之前 ...

  8. Q4业绩超预期股价却反跌,英伟达财报留不住市场信心?

    在收购Arm宣告失败后,英伟达交出了自己的2021年第四季度以及全年财报.从数据来看,它继续延续了多个季度以来的超预期能力,营收.净利润均连续7个季度创历史新高,抵抗住了供应链紧张的风险.还在游戏和数 ...

  9. 英伟达RTX 3080值不值得抢?在TensorFlow上训练了卷积网络

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

最新文章

  1. Vue.js用法详解(一)更新中~
  2. 第3章 衡量线性回归的指标:MSE,RMSE,MAE
  3. 1593: 01串(找规律)
  4. STL之string类型
  5. python安装环境傻瓜式安装_前后端分离——前端开发环境傻瓜式一步到位 nodejs ruby python nginx 安装搭建配置...
  6. maven 国内私服
  7. win10缺少 `VCRUNTIME140.dll` 文件(解决篇)
  8. LLVM Bitcode File Format - LLVM 比特流文件格式
  9. java label 加图片吗_UILabel里面加图片
  10. 编译器C-Free V352注册算法分析
  11. STM32中用 stop 模式 配合低功耗模式下的自动唤醒(AWU) 能否实现FreeRTOS tickless 模式...
  12. matlab 求公切线方程,【原创】绘制两圆公切线MATLAB代码
  13. java8 Stream分组求和reducing分组求最大值
  14. 升级Android SDK (API24)笔记
  15. Spring Bean的作用域之prototype
  16. Excel中序号自动填充
  17. Python-qqbot实现QQ群翻译机器人
  18. TKeed源码解析之URI解析
  19. Qt OpenGL 旋转、平移、缩放
  20. php的设计模式和mvc,mvc设计模式是什么

热门文章

  1. 如何在Markdown中链接到同一文档的一部分?
  2. Spring Boot 与DBunit 配合使用
  3. rpm安装mysql图文
  4. task一个任务结束后执行另一个操作
  5. eclipse配置maven插件
  6. Compass 编译.scss文件的问题
  7. Gesture Based TableView
  8. 利用fnd_conc_global.set_req_globals设置子请求的Parent Request ID
  9. DataTable、DataView、ListBox 数据绑定与查询
  10. ios预支付系统 java_支付系统的预发布环境如何搭建