×

HVM大规模并行功能运行时

消耗积分:2 | 格式:zip | 大小:0.27 MB | 2022-06-16

刘英

分享资料个

授权协议 MIT
开发语言 C/C++ JavaScript Rust
操作系统 跨平台
软件类型 开源软件

软件简介

高阶虚拟机 (HVM) 是一个纯函数式编译目标,它是惰性的、非垃圾收集的大规模并行的,同时也是 beta 最优的,这意味着在某些情况下,它可以比大多数功能运行时(包括 Haskell 的 GHC)快得多。

这得益于一种新的计算模型,即交互网络,它结合了图灵机和 Lambda 演算,该模型的先前实现在实践中效率低下,然而,最近的一项突破大大提高了其效率,催生了 HVM。尽管是一个原型,但它在许多情况下已经击败了成熟的编译器,并且将朝着未知的性能水平扩展。

用法

1.安装

cargo install hvm

2.创建一个HVM文件

HVM 文件看起来像无类型的 Haskell,将以下文件另存为main.hvm

// Creates a tree with `2^n` elements
(Gen 0) = (Leaf 1)
(Gen n) = (Node (Gen(- n 1)) (Gen(- n 1)))

// Adds all elements of a tree
(Sum (Leaf x))   = x
(Sum (Node a b)) = (+ (Sum a) (Sum b))

// Performs 2^n additions in parallel
(Main n) = (Sum (Gen n))

上面的程序创建了一个包含元素的完美二叉树2^n并将它们相加,由于它是递归的,HVM 会自动并行化它。

3.运行和编译

hvm r main 10                       #以 n=10 运行
hvm c main                          #将 HVM 编译为 C 
clang -O2 main.c -o main -lpthread  #将 C 编译为 BIN 
./main 30                           #以 n=30 运行

上面的程序在现代 8 核处理器上运行大约需要 6.4 秒,而相同的 Haskell 代码在具有 GHC 的同一台机器上运行大约需要19.2 秒

这就是 HVM:编写一个函数式程序,获得一个并行的 C 运行时。

 

其他:

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !