这个项目能做什么
Bend 是由 HigherOrderCO 开发、由 HVM2 运行时驱动的高级编程语言,专为大规模并行而设计。它旨在将 Python 和 Haskell 等语言的表达能力与 CUDA 风格 GPU 计算的扩展特性结合起来。
README 中强调的语言特性包括快速对象分配、对带闭包的高阶函数的完整支持、无限制递归和续延。并行是隐式的:README 指出无需创建线程、锁、互斥量或原子操作。可以并行运行的代码就会并行运行,加速效果随核心数接近线性增长,项目声称支持超过 10000 个并发线程。
通过 Rust 的 cargo 进行安装。用户先用 `cargo install hvm` 安装 HVM2 运行时,再用 `cargo install bend-lang` 安装语言。安装说明涵盖 Linux 和 macOS,Windows 建议使用 WSL2。CUDA 运行时需要 NVIDIA CUDA 工具包 12.x,README 指出目前仅支持 NVIDIA GPU。
程序可通过多种后端执行:`bend run-rs` 使用顺序 Rust 解释器,`bend run-c` 使用并行 C 解释器,`bend run-cu` 使用大规模并行 CUDA 解释器。Bend 代码还可以通过 `gen-c` 和 `gen-cu` 编译为独立的 C 或 CUDA 文件,不过 README 称代码生成器仍处于早期阶段。`-s` 标志会报告归约次数、运行时间和每秒交互次数。
README 通过一个顺序求和与并行求和对比的例子,说明分治表述如何实现自动并行执行。它还给出了一个双调排序器基准测试的计时结果:在 Apple M3 Max CPU 上通过 Rust 解释器用时 12.15 秒,同一 CPU 上通过 C 解释器用时 0.96 秒,在 NVIDIA RTX 4090 GPU 上通过 CUDA 解释器用时 0.21 秒。这些数字是项目自身报告的测量结果。
README 提醒,当前版本的单核性能可能较低,随着代码生成和优化技术的进步,性能应会提升。其他资源包括 HVM2 论文、GUIDE.md、FEATURES.md、examples 文件夹和 Discord 社区。
评论
0 评分人数达到10人后显示
登录后参与讨论。