131 个版本 (31 个稳定版)

2.0.22 2024年8月9日
2.0.21 2024年7月3日
2.0.19 2024年6月4日
1.0.20-beta2022年12月27日
0.1.23 2022年3月27日

编程语言 中排名 第19

Download history 36/week @ 2024-05-03 613/week @ 2024-05-10 5493/week @ 2024-05-17 1934/week @ 2024-05-24 1823/week @ 2024-05-31 1064/week @ 2024-06-07 652/week @ 2024-06-14 463/week @ 2024-06-21 616/week @ 2024-06-28 392/week @ 2024-07-05 287/week @ 2024-07-12 238/week @ 2024-07-19 235/week @ 2024-07-26 325/week @ 2024-08-02 398/week @ 2024-08-09 194/week @ 2024-08-16

每月下载量 1,187
13 个crate中(5 个直接) 使用

Apache-2.0

635KB
6K SLoC

CUDA 2.5K SLoC // 0.2% comments Rust 2K SLoC // 0.2% comments C 1.5K SLoC // 0.2% comments

高阶虚拟机 2 (HVM2)

高阶虚拟机 2 (HVM2) 是一个大规模并行的 交互组合子 解释器。

通过将高级语言(如 Python 和 Haskell)的程序编译到 HVM 中,可以直接在类似 GPU 的大规模并行硬件上运行这些语言,速度接近理想加速。

HVM2 是 HVM1 的继任者,HVM1 是 2022 年这一概念的原型。与前辈相比,HVM2 简单、快速,最重要的是更正确。 HOC 为其 论文 中列出的所有功能提供长期支持。

此存储库提供了一种低级 IR 语言,用于指定 HVM2 网络,并从该语言编译到 C 和 CUDA。它不是用于直接人类使用的。如果您正在寻找与 HVM2 交互的高级语言,请查看 Bend

用法

免责声明:目前不支持 Windows,请暂时使用 WSL 作为解决方案。

首先安装依赖项

  • 如果您想使用 C 运行时,请安装兼容 C-11 的编译器,如 GCC 或 Clang。
  • 如果您想使用 CUDA 运行时,请安装 CUDA 和 nvcc(CUDA 编译器)。
    • HVM 需要 CUDA 12.x,并且目前仅在 Nvidia GPU 上运行。

安装 HVM2

cargo install hvm

运行 HVM 程序有多种方式

hvm run    <file.hvm> # interpret via Rust
hvm run-c  <file.hvm> # interpret via C
hvm run-cu <file.hvm> # interpret via CUDA
hvm gen-c  <file.hvm> # compile to standalone C
hvm gen-cu <file.hvm> # compile to standalone CUDA

所有模式产生相同的输出。编译模式需要您编译生成的文件(例如,使用 gcc 文件.c -o 文件),但运行速度更快。CUDA 版本具有更高的峰值性能,但稳定性较差。一般来说,应使用 gen-c 进行生产。

语言

HVM 是高级语言的低级编译目标。它为连接交互网络提供了原始语法。例如

@main = a
  & @sum ~ (28 (0 a))

@sum = (?(((a a) @sum__C0) b) b)

@sum__C0 = ({c a} ({$([*2] $([+1] d)) $([*2] $([+0] b))} f))
  &! @sum ~ (a (b $([+] $(e f))))
  &! @sum ~ (c (d e))

上面的文件实现了递归求和。如果这看起来难以阅读,请不要担心,它并不是为了让人容易阅读的。《Bend》是一种人类可读的语言,应被最终用户和希望针对 HVM 的语言使用。如果您想了解更多关于核心语法和技术的内容,请查阅 PAPER

依赖关系