网易首页 > 网易号 > 正文 申请入驻

首个GPU高级语言,大规模并行就像写Python,已获8500 Star

0
分享至

机器之心报道

编辑:泽南、小舟

最多可支持 10000+ 个并发线程。

经过近 10 年的不懈努力,对计算机科学核心的深入研究,人们终于实现了一个梦想:在 GPU 上运行高级语言。

上周末,一种名为 Bend 的编程语言在开源社区引发了热烈的讨论,GitHub 的 Star 量已经超过了 8500。



GitHub:https://github.com/HigherOrderCO/Bend

作为一种大规模并行的高级编程语言,它仍处于研究阶段,但提出的思路已经让人们感到非常惊讶。使用 Bend,你可以为多核 CPU/GPU 编写并行代码,而无需成为具有 10 年经验的 C/CUDA 专家,感觉就像 Python 一样!



是的,Bend 采用了 Python 语法。

与 CUDA、Metal 等低级替代方案不同,Bend 具有 Python、Haskell 等表达性语言的功能,包括快速对象分配、完全闭包支持的高阶函数、无限制的递归,甚至 continuation。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 hvm

cargo +nightly install bend-lang

最后,编写一些 Bend 文件,并使用以下命令之一运行它:

bend run

# uses the Rust interpreter (sequential)

bend run-c

# uses the C interpreter (parallel)

bend run-cu

# 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 tree

case _:

(x,y) = tree

lft = 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 tree

case _:

(x,y) = tree

return 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 image

def 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 / 2

color = shader (i % width, i /width)

return color

# given a position, returns a color

# for this demo, it just busy loops

def demo_shader (x, y):

bend i = 0:

when i < 5000:

color = fork (i + 1)

else:

color = 0x000001

return color

# renders a 256x256 image using demo_shader

def main:

return render (16, demo_shader)

它确实会起作用,即使涉及的算法在 Bend 上也能很好地并行。长距离通信通过全局 beta 缩减(根据交互演算)执行,并通过 HVM2 的原子链接器正确有效地同步。

最后,作者表示 Bend 现在仅仅是第一个版本,还没有在合适的编译器上投入太多精力。大家可以预期未来每个版本的原始性能都会大幅提高。而现在,我们已经可以使用解释器,从 Python 高级语言的角度一睹大规模并行编程的样子了。

参考内容:

https://news.ycombinator.com/item?id=40390287

https://x.com/VictorTaelin?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor

https://x.com/DrJimFan/status/1791514371086250291

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
日本女排或被重罚?禁赛巴黎奥运会,中国女排输球太冤枉

日本女排或被重罚?禁赛巴黎奥运会,中国女排输球太冤枉

体坛狗哥
2024-06-22 10:12:02
2024年,普京目前访问了四大金刚中的三个,还差一个

2024年,普京目前访问了四大金刚中的三个,还差一个

听风听你
2024-06-22 10:48:03
山西通报中考英语听力事故

山西通报中考英语听力事故

界面新闻
2024-06-22 17:08:04
乌称俄连夜发动大规模攻击!泽连斯基:乌一半的能源产能已被毁掉!乌军总司令与美军高官通话

乌称俄连夜发动大规模攻击!泽连斯基:乌一半的能源产能已被毁掉!乌军总司令与美军高官通话

每日经济新闻
2024-06-22 18:00:06
总理提最新要求,吴清、华春莹、胡明朗等56人,集体宣誓

总理提最新要求,吴清、华春莹、胡明朗等56人,集体宣誓

政知新媒体
2024-06-22 14:20:58
停止网暴!余琦已经够惨,对待为国操劳一生58岁老人,请嘴上留情

停止网暴!余琦已经够惨,对待为国操劳一生58岁老人,请嘴上留情

法制社会报
2024-06-21 08:37:33
大陆发布“台独”最高死刑,台陆委会气急败坏,朱立伦露出真面目

大陆发布“台独”最高死刑,台陆委会气急败坏,朱立伦露出真面目

时时有聊
2024-06-22 18:04:07
太牛掰了!南方医科大学校长叫板全网:教学质量是不可碰触的底线

太牛掰了!南方医科大学校长叫板全网:教学质量是不可碰触的底线

火山诗话
2024-06-22 19:41:15
女排爆大冷:日本3-2掀翻世界第一,还反超中国队,重返亚洲第一

女排爆大冷:日本3-2掀翻世界第一,还反超中国队,重返亚洲第一

侃球熊弟
2024-06-22 23:45:54
余大妈的事儿:越扒越脏

余大妈的事儿:越扒越脏

宾语观世
2024-06-22 12:24:29
断崖式专利差!6G技术美国占了35.2%,日本9.9%,中国是多少?

断崖式专利差!6G技术美国占了35.2%,日本9.9%,中国是多少?

莫将离
2024-06-21 22:08:03
越闹越大!南方洪灾没人管,北方旱情没人问,这个世界到底怎么了

越闹越大!南方洪灾没人管,北方旱情没人问,这个世界到底怎么了

文雅笔墨
2024-06-22 21:57:04
男子称小杨哥直播间卖假茅台,24瓶中14瓶鉴定为假!三只羊回应:第三方鉴定机构不具权威性

男子称小杨哥直播间卖假茅台,24瓶中14瓶鉴定为假!三只羊回应:第三方鉴定机构不具权威性

每日经济新闻
2024-06-21 17:32:14
里程碑!1-1大冷门,世界第74战平世界第34,迎来队史欧洲杯第1分

里程碑!1-1大冷门,世界第74战平世界第34,迎来队史欧洲杯第1分

侧身凌空斩
2024-06-22 22:56:58
睁眼说瞎话!广西发文称4座水库科学调度,将桂林百年一遇洪水降到三十年一遇

睁眼说瞎话!广西发文称4座水库科学调度,将桂林百年一遇洪水降到三十年一遇

王姐懒人家常菜
2024-06-21 18:22:37
打脸! 姜萍没有退赛,已经答完题了, 网友:对一题也是赢家

打脸! 姜萍没有退赛,已经答完题了, 网友:对一题也是赢家

小陆搞笑日常
2024-06-22 22:02:37
海底捞CEO杨利娟辞任!被称“最牛服务员”,从月薪160元到身家125亿元

海底捞CEO杨利娟辞任!被称“最牛服务员”,从月薪160元到身家125亿元

鲁中晨报
2024-06-22 19:39:14
落选奥运名单?28岁女排名将发文:终点!蔡斌培养3年后临阵放弃

落选奥运名单?28岁女排名将发文:终点!蔡斌培养3年后临阵放弃

我爱英超
2024-06-22 17:39:15
云南一网约车司机约女乘客吃烧烤后将其强奸,辩护人称女子应当预见风险,法院判了

云南一网约车司机约女乘客吃烧烤后将其强奸,辩护人称女子应当预见风险,法院判了

潇湘晨报
2024-06-22 19:20:05
你见过最主动的女生是什么样的?网友们也太会了!

你见过最主动的女生是什么样的?网友们也太会了!

滑稽斑马呀
2024-06-18 18:38:21
2024-06-23 03:08:49
机器之心Pro
机器之心Pro
专业的人工智能媒体
9104文章数 141946关注度
往期回顾 全部

科技要闻

一文看懂纯血鸿蒙,自主可控操作系统来了

头条要闻

欧洲杯-C罗助攻平纪录 葡萄牙3-0锁定第1

头条要闻

欧洲杯-C罗助攻平纪录 葡萄牙3-0锁定第1

体育要闻

别人去沙特养老,坎特去沙特练级

娱乐要闻

陈晓惹争议!被曝婚变离家出走冷暴力

财经要闻

专访尹艳林:市场上的钱都流向了哪里?

汽车要闻

中型超混SUV 凯翼昆仑iHD预售11.99万起

态度原创

教育
本地
艺术
家居
亲子

教育要闻

抚顺中考英语:过去进行时的结构怎么区分,这样做更简单

本地新闻

2024·合肥印象|用崭新视角对话城市发展

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

家居要闻

木质家具 充溢古典之风

亲子要闻

相差一分钟的龙凤胎宝宝,这么可爱她居然有两个!

无障碍浏览 进入关怀版