Bend
Bend 是一款开源的高级编程语言,旨在让并行计算变得像编写 Python 或 Haskell 一样简单。它解决了传统并行编程中复杂的线程管理和同步问题,开发者无需手动配置线程、锁或原子操作,即可在 GPU 等大规模并行硬件上运行代码。
Bend 的核心优势在于其强大的扩展性。借助 HVM2 运行时,它能自动调度超过一万并发线程,在 NVIDIA GPU 上实现近乎线性的性能加速。这意味着处理海量数据或复杂计算时,只需增加核心数量,速度就会显著提升。
这款软件非常适合追求高性能的计算型开发者及科研人员,尤其是那些希望简化并行逻辑但不愿妥协效率的人群。目前 Bend 主要支持 Linux 和 macOS 环境下的 NVIDIA 显卡。虽然单核性能仍在优化中,但其多核扩展潜力巨大。如果你渴望探索下一代高效编程范式,Bend 提供了一个极具吸引力的入口。
使用场景
某金融风控团队需要实时分析每日千万级交易流水,以毫秒级精度识别潜在欺诈模式。
没有 Bend 时
- 依赖 C++ 或 Java 编写多线程代码,需手动管理线程池、锁机制及内存同步。
- 计算任务主要跑在 CPU 上,难以充分利用昂贵的 GPU 集群进行大规模并行加速。
- 随着数据量增长,系统扩展困难,增加服务器节点无法带来线性性能提升。
- 复杂的并发逻辑导致调试周期长,容易出现死锁或数据竞争等隐蔽 Bug。
使用 Bend 后
- 无需关心线程创建或互斥锁,Bend 自动将逻辑映射到 GPU 核心实现无缝并行。
- 直接利用 NVIDIA GPU 的算力,处理相同规模数据时速度提升数十倍。
- 代码结构保持高级语言风格,支持高阶函数与递归,开发效率显著提高。
- 硬件资源扩容即可线性加速,轻松应对未来数据量的指数级增长需求。
Bend 通过屏蔽底层并发复杂性,让开发者能用极简代码释放 GPU 的极致算力。
运行环境要求
- Linux
- macOS
需要 NVIDIA GPU,CUDA 12.x
未说明

快速开始
Bend
一种高级、大规模并行编程语言
目录
简介
Bend 提供了类似 Python 和 Haskell 等表达性语言的感觉和功能。这包括快速的对象分配、对带有闭包的高阶函数的完全支持、无限制的递归,甚至延续 (continuations)。
Bend 像 CUDA 一样扩展,它运行在 GPU 等大规模并行硬件上,基于核心数量实现近乎线性的加速,且无需显式的并行标注:无需线程创建、锁、互斥锁或原子操作。
Bend 由 HVM2 运行时驱动。
重要说明
- Bend 旨在在核心扩展性能方面表现出色,支持超过 10000 个并发线程。
- 当前版本单核性能可能较低。
- 随着我们推进代码生成和优化技术,您可以期待性能有显著提升。
- 我们仍在努力支持 Windows。请使用 WSL2 作为替代方案。
- 我们目前仅支持 NVIDIA 显卡。
安装
安装依赖项
在 Linux 上
# Install Rust if you haven't already.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# For the C version of Bend, use GCC. We recommend a version up to 12.x.
sudo apt install gcc
对于 CUDA 运行时,请为 Linux 安装 CUDA toolkit 12.x 版本。
在 Mac 上
# Install Rust if you haven't it already.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# For the C version of Bend, use GCC. We recommend a version up to 12.x.
brew install gcc
安装 Bend
- 通过运行以下命令安装 HVM2:
# HVM2 is HOC's massively parallel Interaction Combinator evaluator.
cargo install hvm
# This ensures HVM is correctly installed and accessible.
hvm --version
- 通过运行以下命令安装 Bend:
# This command will install Bend
cargo install bend-lang
# This ensures Bend is correctly installed and accessible.
bend --version
入门指南
运行 Bend 程序
bend run <file.bend> # uses the C interpreter by default (parallel)
bend run-rs <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)
# Notes
# You can also compile Bend to standalone C/CUDA files using gen-c and gen-cu for maximum performance.
# The code generator is still in its early stages and not as mature as compilers like GCC and GHC.
# You can use the -s flag to have more information on
# Reductions
# Time the code took to run
# Interaction per second (In millions)
测试 Bend 程序
下面的示例计算从 start 到 target 范围内所有数字的和。它可以写成两种不同的方法:一种是本质上顺序执行的(因此无法并行化),另一种是易于并行化的。(为了可见性,我们将在大多数示例中使用 -s 标志)
顺序版本:
首先,创建一个名为 sequential_sum.bend 的文件
# Write this command on your terminal
touch sequential_sum.bend
然后使用文本编辑器打开文件 sequential_sum.bend,复制以下代码并粘贴到文件中。
# Defines the function Sum with two parameters: start and target
def Sum(start, target):
if start == target:
# If the value of start is the same as target, returns start.
return start
else:
# If start is not equal to target, recursively call Sum with
# start incremented by 1, and add the result to start.
return start + Sum(start + 1, target)
def main():
# This translates to (1 + (2 + (3 + (...... + (999999 + 1000000)))))
# Note that this will overflow the maximum value of a number in Bend
return Sum(1, 1_000_000)
运行文件
您可以使用 Rust 解释器(顺序执行)运行它
bend run-rs sequential_sum.bend -s
或者您可以使用 C 解释器(顺序执行)运行它
bend run-c sequential_sum.bend -s
如果您有 NVIDIA GPU,也可以使用 CUDA 运行(顺序执行)
bend run-cu sequential_sum.bend -s
在此版本中,下一个要计算的值取决于之前的总和,这意味着在当前计算完成之前无法继续。现在,让我们看看易于并行化的版本。
可并行化版本:
首先关闭旧文件,然后进入终端创建 parallel_sum.bend
# Write this command on your terminal
touch parallel_sum.bend
然后使用文本编辑器打开文件 parallel_sum.bend,复制以下代码并粘贴到文件中。
# Defines the function Sum with two parameters: start and target
def Sum(start, target):
if start == target:
# If the value of start is the same as target, returns start.
return start
else:
# If start is not equal to target, calculate the midpoint (half),
# then recursively call Sum on both halves.
half = (start + target) / 2
left = Sum(start, half) # (Start -> Half)
right = Sum(half + 1, target)
return left + right
# A parallelizable sum of numbers from 1 to 1000000
def main():
# This translates to (((1 + 2) + (3 + 4)) + ... (999999 + 1000000)...)
return Sum(1, 1_000_000)
在此示例中,(3 + 4) 的求和不依赖于 (1 + 2),意味着它可以并行运行,因为两个计算可以同时发生。
运行文件
您可以使用 Rust 解释器(顺序执行)运行它
bend run-rs parallel_sum.bend -s
或者您可以使用 C 解释器(并行)运行它
bend run-c parallel_sum.bend -s
如果您有 NVIDIA GPU,也可以使用 CUDA 运行(大规模并行)
bend run-cu parallel_sum.bend -s
在 Bend 中,只需更改运行命令即可进行并行化。如果您的代码可以并行运行,它就会并行运行。
加速示例
下面的代码片段实现了一个带有不可变树旋转 (immutable tree rotations) 的 比特尼克排序器 (bitonic sorter)。这通常不是你会预期能在 GPU 上快速运行的算法类型。然而,由于它采用了本质上具有并行性的分治法 (divide and conquer),Bend 将在多个线程上执行它,无需创建线程,也无需显式的锁管理 (lock management)。
比特尼克排序器基准测试
bend run-rs: CPU, Apple M3 Max: 12.15 秒bend run-c: CPU, Apple M3 Max: 0.96 秒bend run-cu: GPU, NVIDIA RTX 4090: 0.21 秒
点击此处查看比特尼克排序器代码
# 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))
# Swaps distant values (Red Box)
def warp(d, s, a, b):
switch d:
case 0:
return swap(s ^ (a > b), a, b)
case _:
(a.a, a.b) = a
(b.a, b.b) = b
(A.a, A.b) = warp(d-1, s, a.a, b.a)
(B.a, B.b) = warp(d-1, s, a.b, b.b)
return ((A.a,B.a),(A.b,B.b))
# Propagates downwards
def down(d,s,t):
switch d:
case 0:
return t
case _:
(t.a, t.b) = t
return (rots(d-1, s, t.a), rots(d-1, s, t.b))
# Swaps a single pair
def swap(s, a, b):
switch s:
case 0:
return (a,b)
case _:
return (b,a)
# Testing
# -------
# Generates a big tree
def gen(d, x):
switch d:
case 0:
return x
case _:
return (gen(d-1, x * 2 + 1), gen(d-1, x * 2))
# Sums a big tree
def sum(d, t):
switch d:
case 0:
return t
case _:
(t.a, t.b) = t
return sum(d-1, t.a) + sum(d-1, t.b)
# Sorts a big tree
def main:
return sum(20, sort(20, 0, gen(20, 0)))
如果你对某些其他算法感兴趣,可以查看我们的 示例文件夹
其他资源
- 要了解 Bend 背后的技术,请查阅 HVM2 论文。
- 我们正在编写官方文档,在此期间,若要了解更深入的说明,请查看 GUIDE.md
- 在 FEATURES.md 阅读关于我们功能的信息。
- Bend 由 HigherOrderCO 开发 —— 加入我们的 Discord!
版本历史
0.2.380.2.370.2.37-alpha.10.2.360.2.340.2.330.2.320.2.310.2.300.2.290.2.280.2.270.2.260.2.250.2.240.2.230.2.220.2.210.2.200.2.19常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。