英伟达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和cuDNN下载过慢的问题
文章目录 为什么会慢 为什么会快 怎么加速下载英伟达CUDA和cuDNN 推荐下载工具-2021-01-19更新 为什么会慢 英伟达开发者网站最近的服务器位于日本东京,带宽也是很感人的. 可以看到下载 ...
- 英伟达联手Arm CPU打造AI超算,百万兆级性能,主攻气候变化和核武建模
雷刚 发自 凹非寺 量子位 报道 | 公众号 QbitAI AI超算怎么搞?老黄祭出联谊招. 在国际超算大会上,英伟达宣布正式支持Arm CPU,为高性能计算行业开辟了一条全新途径,以构建具有极高能 ...
- 英伟达CUDA 10终于开放下载了
栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI 英伟达的CUDA 10工具包,终于可以下载了. 与9字头的前辈相比,10.0是第一次为图灵GPU定制的版本. 英伟达新近发布的GeForce ...
- AI大牛周伯文加入清华电子系,英伟达预警“矿难”来袭,小冰成立游戏工作室,今日更多大新闻在此...
日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好,今天是5月30日星期一. 这周只用上四天,就迎来不!用!调!休!的端午假期了. 今天科技圈有哪些值得关注的新闻? 一起来看. 今日大新闻 ...
- 软硬件解耦太难!英伟达竟“越来越像Mobileye”
尽管Mobileye已经愿意推行"软硬件解耦",但由于车企自己目前还没有能力搞定算法,Mobileye便"不得不"又回到软硬一体化的老路上. 随着软件能力越来越 ...
- 黄仁勋没有回应,英伟达没有新品
晓査 乾明 假装发自 苏州 量子位 出品 | 公众号 QbitAI 黄仁勋上台,然后下台. 在今天上午的GTC China大会上,黄教主没能拿出让人惊艳的新品,也没有只字片语回应英伟达的目前的&quo ...
- 用“AI核弹”饱和攻击的英伟达,如何赢下AI计算新赛场?
在2012年的ImageNet挑战赛(ILSVRC)上,深度卷积神经网络AlexNet横空出世,在图像分类识别领域实现了质的飞跃,被认为是AI时代的标志性事件,代表着深度学习时代的正式开端. 在此之前 ...
- Q4业绩超预期股价却反跌,英伟达财报留不住市场信心?
在收购Arm宣告失败后,英伟达交出了自己的2021年第四季度以及全年财报.从数据来看,它继续延续了多个季度以来的超预期能力,营收.净利润均连续7个季度创历史新高,抵抗住了供应链紧张的风险.还在游戏和数 ...
- 英伟达RTX 3080值不值得抢?在TensorFlow上训练了卷积网络
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...
最新文章
- Vue.js用法详解(一)更新中~
- 第3章 衡量线性回归的指标:MSE,RMSE,MAE
- 1593: 01串(找规律)
- STL之string类型
- python安装环境傻瓜式安装_前后端分离——前端开发环境傻瓜式一步到位 nodejs ruby python nginx 安装搭建配置...
- maven 国内私服
- win10缺少 `VCRUNTIME140.dll` 文件(解决篇)
- LLVM Bitcode File Format - LLVM 比特流文件格式
- java label 加图片吗_UILabel里面加图片
- 编译器C-Free V352注册算法分析
- STM32中用 stop 模式 配合低功耗模式下的自动唤醒(AWU) 能否实现FreeRTOS tickless 模式...
- matlab 求公切线方程,【原创】绘制两圆公切线MATLAB代码
- java8 Stream分组求和reducing分组求最大值
- 升级Android SDK (API24)笔记
- Spring Bean的作用域之prototype
- Excel中序号自动填充
- Python-qqbot实现QQ群翻译机器人
- TKeed源码解析之URI解析
- Qt OpenGL 旋转、平移、缩放
- php的设计模式和mvc,mvc设计模式是什么
热门文章
- 如何在Markdown中链接到同一文档的一部分?
- Spring Boot 与DBunit 配合使用
- rpm安装mysql图文
- task一个任务结束后执行另一个操作
- eclipse配置maven插件
- Compass 编译.scss文件的问题
- Gesture Based TableView
- 利用fnd_conc_global.set_req_globals设置子请求的Parent Request ID
- DataTable、DataView、ListBox 数据绑定与查询
- ios预支付系统 java_支付系统的预发布环境如何搭建