HVM大規(guī)模并行功能運行時
高階虛擬機 (HVM) 是一個純函數(shù)式編譯目標,它是惰性的、非垃圾收集的和大規(guī)模并行的,同時也是 beta 最優(yōu)的,這意味著在某些情況下,它可以比大多數(shù)功能運行時(包括 Haskell 的 GHC)快得多。
這得益于一種新的計算模型,即交互網絡,它結合了圖靈機和 Lambda 演算,該模型的先前實現(xiàn)在實踐中效率低下,然而,最近的一項突破大大提高了其效率,催生了 HVM。盡管是一個原型,但它在許多情況下已經擊敗了成熟的編譯器,并且將朝著未知的性能水平擴展。
用法
1.安裝
cargo install hvm
2.創(chuàng)建一個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))
上面的程序創(chuàng)建了一個包含元素的完美二叉樹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 運行
上面的程序在現(xiàn)代 8 核處理器上運行大約需要 6.4 秒,而相同的 Haskell 代碼在具有 GHC 的同一臺機器上運行大約需要19.2 秒。
這就是 HVM:編寫一個函數(shù)式程序,獲得一個并行的 C 運行時。
其他:
評論
圖片
表情
