首个GPU高级语言,大规模并行就像写Python,已获8500 Star
大家好,今天本人给大家带来文章《首个GPU高级语言,大规模并行就像写Python,已获8500 Star》,文中内容主要涉及到,如果你对科技周边方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!
经过近10年的不懈努力,对计算机科学核心的深入研究,人们终于实现了一个梦想:在GPU上运行高级语言。
上周末,一种名为 Bend 的编程语言在开源社区引发了热烈的讨论,GitHub 的 Star 量已经超过了 8500。
GitHub:https://github.com/HigherOrderCO/Bend
作为一种大规模并行的高级编程语言,它仍处于研究阶段,但提出的思路已经让人们感到非常惊讶。使用 Bend,你可以为多核 CPU/GPU 编写并行代码,而无需成为具有10年经验的 C/CUDA 专家,感觉就像 Python 一样!
是的,Bend 采用了 Python 语法。
Bend是一种支持Python、Haskell等表达性语言的编程范式,它不同于CUDA、Metal等低级替代方案。Bend具备快速对象分配、完全闭包支持的高阶函数、无限制的递归、以及基于核心数量的近线性加速。Bend在大规模并行硬件上运行,并提供基于HVM2的运行时支持。
该项目的主要贡献者 Victor Taelin 来自巴西,他在 X 平台上分享了 Bend 的主要特性和开发思路。
首先,Bend 不适用于现代机器学习算法,因为这些算法是高度正则化的(矩阵乘法)且具有预先分配的内存,并且通常已经编写了好的 CUDA 内核。
Bend 的巨大优势体现在实际应用中,这是因为「真正的应用程序」通常没有预算来制作专用的 GPU 内核。试问,谁在 CUDA 中制作了网站?而且,即使有人这样做了,也是不可行的,因为:
1. 真正的应用程序需要从许多不同的库导入函数,无法为它们编写 CUDA 内核;
2. 真实的应用程序具有动态函数和闭包;
3. 真实的应用程序会动态且不可预测地分配大量内存。
Bend 完成了一些新的尝试,并且在某些情况下可以相当快,但现在想写大语言模型肯定是不行的。
作者对比了一下旧方法和新的方法,使用相同的算法树中的双调排序,涉及 JSON 分配和操作。Node.js 的速度是 3.5 秒(Apple M3 Max),Bend 的速度是 0.5 秒(NVIDIA RTX 4090)。
是的,目前 Bend 需要整块 GPU 才能在一个核心上击败 Node.js。但另一方面,这还是一个初生的新方法与大公司(Google)优化了 16 年的 JIT 编译器在进行比较。未来还有很多可能性。
如何使用
在 GitHub 上,作者简要介绍了 Bend 的使用流程。
首先,安装 Rust。如果你想使用 C 运行时,请安装 C 编译器(例如 GCC 或 Clang);如果要使用 CUDA 运行时,请安装 CUDA 工具包(CUDA 和 nvcc)版本 12.x。Bend 目前仅支持 Nvidia GPU。
然后,安装 HVM2 和 Bend:
cargo +nightly install hvmcargo +nightly install bend-lang
最后,编写一些 Bend 文件,并使用以下命令之一运行它:
bend run<file.bend> # uses the Rust interpreter (sequential)bend run-c<file.bend> # uses the C interpreter (parallel)bend run-cu <file.bend> # uses the CUDA interpreter (massively parallel)
你还可以使用 gen-c 和 gen-cu 将 Bend 编译为独立的 C/CUDA 文件,以获得最佳性能。但 gen-c、gen-cu 仍处于起步阶段,远没有像 GCC 和 GHC 这样的 SOTA 编译器那么成熟。
Bend 中的并行编程
这里举例说明可以在 Bend 中并行运行的程序。例如,表达式:
(((1 + 2) + 3) + 4)
不能并行运行,因为 + 4 取决于 + 3,而 + 3 又取决于 (1+2)。而表达式:
((1 + 2) + (3 + 4))
可以并行运行,因为 (1+2) 和 (3+4) 是独立的。Bend 并行运行的条件就是符合并行逻辑。
再来看一个更完整的代码示例:
# Sorting Network = just rotate trees!def sort (d, s, tree):switch d:case 0:return treecase _:(x,y) = treelft = sort (d-1, 0, x)rgt = sort (d-1, 1, y)return rots (d, s, lft, rgt)# Rotates sub-trees (Blue/Green Box)def rots (d, s, tree):switch d:case 0:return treecase _:(x,y) = treereturn down (d, s, warp (d-1, s, x, y))(...)
该文件实现了具有不可变树旋转的双调排序器。它不是很多人期望的在 GPU 上快速运行的算法。然而,由于它使用本质上并行的分治方法,因此 Bend 会以多线程方式运行它。一些速度基准:
- CPU,Apple M3 Max,1 个线程:12.15 秒
- CPU,Apple M3 Max,16 线程:0.96 秒
- GPU,NVIDIA RTX 4090,16k 线程:0.21 秒
不执行任何操作即可实现 57 倍的加速。没有线程产生,没有锁、互斥锁的显式管理。我们只是要求 Bend 在 RTX 上运行我们的程序,就这么简单。
Bend 不限于特定范例,例如张量或矩阵。任何的并发系统,从着色器到类 Erlang 的 actor 模型都可以在 Bend 上进行模拟。例如,要实时渲染图像,我们可以简单地在每个帧上分配一个不可变的树:
# given a shader, returns a square imagedef render (depth, shader):bend d = 0, i = 0:when d < depth:color = (fork (d+1, i*2+0), fork (d+1, i*2+1))else:width = depth / 2color = shader (i % width, i /width)return color# given a position, returns a color# for this demo, it just busy loopsdef demo_shader (x, y):bend i = 0:when i < 5000:color = fork (i + 1)else:color = 0x000001return color# renders a 256x256 image using demo_shaderdef main:return render (16, demo_shader)
它确实会起作用,即使涉及的算法在 Bend 上也能很好地并行。长距离通信通过全局 beta 缩减(根据交互演算)执行,并通过 HVM2 的原子链接器正确有效地同步。
最后,作者表示 Bend 现在仅仅是第一个版本,还没有在合适的编译器上投入太多精力。大家可以预期未来每个版本的原始性能都会大幅提高。而现在,我们已经可以使用解释器,从 Python 高级语言的角度一睹大规模并行编程的样子了。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于科技周边的相关知识,也可关注golang学习网公众号。

- 上一篇
- Golang 函数接收 map 参数时的注意事项

- 下一篇
- 自动驾驶场景中的长尾问题怎么解决?
-
- 科技周边 · 人工智能 | 3小时前 |
- 免费AI文字转语音工具有哪些
- 497浏览 收藏
-
- 科技周边 · 人工智能 | 3小时前 |
- 豆包AI原型设计技巧:快速构建交互流程
- 468浏览 收藏
-
- 科技周边 · 人工智能 | 3小时前 |
- 豆包AI助你掌握微服务与分布式系统
- 243浏览 收藏
-
- 科技周边 · 人工智能 | 3小时前 |
- Mac与Windows通用AI剪辑工具推荐
- 444浏览 收藏
-
- 科技周边 · 人工智能 | 3小时前 |
- PerplexityAIAPI接入教程全解析
- 247浏览 收藏
-
- 科技周边 · 人工智能 | 3小时前 |
- AWSLambda快速入门:5分钟生成AI函数
- 273浏览 收藏
-
- 科技周边 · 人工智能 | 4小时前 |
- GPT-5发布!OpenAI最强AI模型来袭
- 146浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 511次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 498次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 千音漫语
- 千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
- 164次使用
-
- MiniWork
- MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
- 159次使用
-
- NoCode
- NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
- 166次使用
-
- 达医智影
- 达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
- 167次使用
-
- 智慧芽Eureka
- 智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
- 178次使用
-
- GPT-4王者加冕!读图做题性能炸天,凭自己就能考上斯坦福
- 2023-04-25 501浏览
-
- 单块V100训练模型提速72倍!尤洋团队新成果获AAAI 2023杰出论文奖
- 2023-04-24 501浏览
-
- ChatGPT 真的会接管世界吗?
- 2023-04-13 501浏览
-
- VR的终极形态是「假眼」?Neuralink前联合创始人掏出新产品:科学之眼!
- 2023-04-30 501浏览
-
- 实现实时制造可视性优势有哪些?
- 2023-04-15 501浏览