HVM

大规模并行功能运行时
授权协议 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 运行时。

 

其他:

  • 在ChinaUnix发现了一个非常不错的系列,这个系列介绍了HVM的概念和实现机制,还通过一个名叫“Smart-VM”的例子来给大家讲解如何实践HVM技术,作者的id是micklongen ,下面是文章的列表: 第2章 硬件虚拟机技术简介 第3章 Intel-VT技术 第4章 建立开发环境 第5章 总体设计方案 第6章 Smart-VM操作系统的实现 第7章 Smart-VM虚拟化层的实现 第8章

  • 今天生产服务器突然中断重启,刚开始以为 天热 机房温度高导致,启动后查看时间日志,发现蓝屏重启。找到 C:\Windows\Minidump文件夹下 蓝屏日志,使用windbg打开查看分析: Microsoft (R) Windows Debugger Version 6.12.0002.633 X86 Copyright (c) Microsoft Corporation. All right

  • \#============================================================================ Python configuration setup for 'xm create'. This script sets the parameters used when a domain is created using 'xm creat

  • An example of Xen HVM DomU configuration file. Xen HVM DomU配置文件的示例。 An example for install the OS from an ISO: 从ISO安装操作系统的示例: name="10.0.1.235" vcpus=2memory=2048 shadow_memory=8 disk=['file:/lhome/x

  • 想验证下最新版本的qemu的一些功能,于是将其从qemu-0.12升级到了qemu-1.4,编译安装一切都很顺利,但是当创建virtual machine时,报错如下: [root@compute-30-02 data3]# virsh create ubuntu.xml error: Failed to create domain from ubuntu.xml error: unknown

  • DNGuard 新版内核框架基本定下来了。目前版本定为 beta1。 综合考虑,采用了兼容所有 dotNet framework 版本的内核模式,Net 1.0, 1.1, 2.0, 3.0, 3.5 以及其所有子版本(如beta x,CTP,RC,sp x等)。采用的纯虚拟机处理层内核,在dotNet执行引擎层没有安装内核服务,在执行层兼容所有版本的dotNet框架太费精力。 开发中遇到一个难题

  • 原文地址:https://www.cnblogs.com/jiayy/p/3765591.html Xen是一个开源的type-1或者裸机管理程序,它使得一个物理主机能够同时并行运行多个相同的或者不同的操作系统实例。Xen是目前唯一的开源可得的type-1管理程序。Xen被应用于许多商业和开源的应用程序中,比如:服务器虚拟化(server virtualization)、基础设施即服务(Infra

  • 应使用者的要求,增加了反制静态编译工具查看程序集完整结构的功能。 当然首当其冲的就是Reflector了。 个人认为,加密最主要的就是加密方法代码,结构啥的并不是重点, 如果是做中间件、类库啥的,结构还非得给用户看不可。 试用版开放了 常规模式的 用户字符串加密 功能。 标准版将会提供名称自动混淆功能。 具体详情可参考软件界面中的即时提示信息。 程序中灰色不可用的选项是标准版或者专业版才提供的功能

  • 新版本主要对HVM核心的算法和实现模块进行了调整. 增加对64位Windows系统的支持. 主程序界面和操作性方面的改进. 增加自动检测更新模块. 目前在进行64系统方面的检测,新版预计下月初发布.

  • A set of extra instructions is added that can be used by a process in VMX root mode. These instructions do things like allocating a memory page on which to store a full copy of the CPU state, start, a

  • 目前好多新类型,包括t2, r3都只支持hvm虚拟化类型的AMI,所以有必要做点hvm的AMI来用,但是从头重做又太麻烦,于是想把现有的pv转换成hvm。首先AMI目前没法直接转换,所以可以将pv的AMI应用的snapshot重新注册成新AMI。具体步骤如下: (1)在Snapshot列表中选择pv的AMI所引用的根分区快照,点右键Create Image,其他地方保持默认,只需要将Virtual

  • 一款 .Net 内核级的加密保护工具。 采用的是纯虚拟机处理层的内核。 兼容目前所有的32位 .Net 框架版本,Net 1.1, 2.0, 3.0, 3.5 以及其所有子版本(如beta x,CTP,RC,sp x等)。 支持泛型方法的加密。 加密保护过程不依赖 ildasm 和 ilasm 。 支持 C++/CLI含本地代码的混合程序集的加密保护。 完全兼容其它纯混淆保护工具,不必担心其它混淆

  • DNGuard HVM 专业版 v2.7 正式发布。 专业版使用HVM保护技术,方法体IL代码始终处于保护状态。 即使是在虚拟机编译过程中,在内存中也不会出现正确完整的ILCode。而是以HVM的伪代码形式出现。 HVM虚拟机通过参与Jit的编译过程,协助Jit直接从HVM伪代码生成本地代码。 官方网站:http://www.dnguard.net/ DNGuard 标准版零售价: 600   

  • [From] http://blog.csdn.net/blade2001/article/details/16864473 很多人看到同样配置的VPS价格相差很大,甚是不理解,其实VPS使用的虚拟技术种类有很多,如OpenVZ、Xen、KVM、Xen和HVM与PV。在XEN中pv是半虚拟化,hvm是全虚拟化,pv只能用于linux内核的系统,效率更高,hvm可以虚拟所有常见操作系统(可以使用wi

  • 相比前一次的更新: 调整了加密算法以及加密数据的存储结构。 试用版(英文)下载地址:http://www.dnguard.net/downloads.aspx 上个星期花时间做了 DNGuard 的主页:http://www.dnguard.net/ 专业版的注册系统完成大半了,等主页上的客户中心完成了再正式发布。

  • 目前加密壳将核心转移到Jit层后,内核模式的强度增加空间已经很小了。目前市面上的加密壳至少有一个共同的缺陷,无法防止Jit底层截获IL字节码。 有些壳采用从周边增加强度(如 Anti Hook),由于hook的多样性再加上壳又需要考虑自己的兼容性,所以这个效果不是十分理想。 从防止脱壳入手,通过保护局部变量签名和异常处理表,来阻止方法体的脱壳还原。这样虽然不能阻止截获IL字节码,如果配合流程混淆还

  • 问题原因:xenserver主机没有开启支持虚拟化 转载于:https://blog.51cto.com/williamliuwen/1686358

  • 主程序更新,界面,进度显示,修正对个别非标准。Net程序集加密出错的bug。 运行库更新,修正asp.net 1.1下的个别兼容性问题。 泛型更新,修正之前最大只支持127个泛型参数的问题。 试用版开放 混淆相关的功能。 试用版和标准版在内核强度方面做了区分。 下载地址: http://www.redcheek.net/bbs/read.php?tid=5051

  • Net 内核级的加密保护工具。 采用的是纯虚拟机处理层的内核。 兼容目前所有的32位 .Net 框架版本,Net 1.1, 2.0, 3.0, 3.5 以及其所有子版本(如beta x,CTP,RC,sp x等)。 直接支持强名程序集的加密。 提供了强名密钥管理功能,支持snk和pfx的强名文件。 能自动使用匹配的强名密钥对加密的程序集进行重新签名。 自动名称混淆保护功能。 支持泛型类型以及泛型方

 相关资料
  • goroutine是一个轻量级的线程。 package main import "fmt" func f(from string) { for i := 0; i < 3; i++ { fmt.Println(from, ":", i) } } func main() { // 假设我们有一个函数叫做f(s) // 这里我们使用通常的同步调用来调用函

  • 我正在使用Maven SureFire,TestNG(扩展AbstractTestNGCucumber测试)和Cucumber,并且有几个功能文件,每个文件都有几个场景。我希望能够在一个功能文件中并行运行每个场景,但一次只能运行一个功能文件。这有可能吗? 举个例子: 我希望场景1a、1b和1c在功能文件1中并行运行。一旦这些完成,运行场景2a和功能2等的2b。 这是当前一次从所有功能文件运行所有方

  • 我有一堆功能文件(大约15个),其中每个功能文件都有一个线程,需要睡眠至少3分钟(对于一些复杂的后台应用程序,需要执行一些功能)。我需要一种并行执行它们的方法。 我有一个简单的CucumberRunnerTestCLass。 非常感谢您的帮助。谢谢

  • 问题内容: 我正在开始使用Python 3在PyQt5中创建GUI。单击按钮后,我要运行“randomint”函数并将返回的整数显示到名为“lcd”的QLCDNumber。 这是我的代码: 我得到的输出: TypeError:参数1具有意外的类型’NoneType’ 如何获得LCD以显示功能“ randomint”的输出? 问题答案: 问题在于,期望使用插槽(Python可调用对象),但是返回。因

  • 我在src/test/resources/feature/中有以下功能文件(单独的功能文件),我想并行运行它们。比如:一个功能文件必须在chrome中执行,另一个必须在另一个chrome实例中执行,如@Tags name所述。 我正在使用Java1.2。5版本,AbstractTestNGCucumberTests作为runner。我可以运行一个功能文件,但当我尝试使用cucumber jvm并行

  • 问题内容: 在Swift之前,在Objective-C中,我会使用混淆或钩住类中的方法。 如果有人对修改Swift的运行时以及挂钩功能(如CydiaSubstrate)和其他在此方面提供帮助的库有任何信息,请通知我。 问题答案: 我已经在Swift中成功使用方法。本示例说明如何在NSDictionary上挂钩描述方法 我的实现: 混乱的代码: 编辑: 此代码适用于从 NSObject 继承的任何自

  • 问题内容: 我的问题与jQuery方法有关。我无法使用成功参数。 这有效: 这不是: 在第一种情况下,我得到一个JavaScript警报窗口,该窗口使我知道调用的函数正在工作。我在第二个代码块中所做的所有更改都放在了。 这样做的目的是验证$ .ajax是否正在运行,以便在$ .ajax成功运行时可以在其中放置一些实际有用的代码。 问题答案: 在第二个示例中,除非您从服务器成功回电,否则将不会发生任

  • 我有超过50种不同类型的输入,我在功能文件中的Example关键字下定义了这些输入,执行这些输入需要花费更多的时间。有没有办法并行运行这些输入?。我不想让任何人来测试这种方法。请帮忙。