LLVM 项目引入了 HPVM 1.0,这是一个针对 CPU、GPU、FPGA 和加速器的编译器

LLVM项目的开发人员发布了HPVM 1.0(异构并行虚拟机)编译器,旨在简化异构系统的编程,并提供为CPU、GPU、FPGA和特定领域硬件加速器生成代码的工具(支持FGPA 和加速器未包含在 1.0 版本中)。 项目代码根据 Apache 2.0 许可证分发。

HPVM的主要思想是在编译时提供并行可执行程序的统一表示,可以使用支持并行计算的各种类型的硬件来执行,包括GPU、向量指令、多核处理器、FPGA和各种专用加速器芯片。 与其他系统不同,HPVM 尝试结合三种功能来组织异构计算:独立于语言和硬件的中间表示、虚拟指令集架构 (ISA) 和运行时调度。

HPVM 的目标无关中间表示 (IR) 建立在 LLVM 9.0 中间指令表示的基础上,并通过分层数据流图对其进行扩展,以捕获任务级、数据级和管道级并行性。 HPVM 中间表示还包括向量指令和共享内存。 使用中间表示的主要目的是异构系统的高效代码生成和优化。

虚拟指令集架构(ISA)允许不同类型的并行计算硬件之间的可移植性,并且使得在使用异构系统的不同元素时不损失性能成为可能。 虚拟 ISA 还可用于提供可使用 CPU、GPU、FPGA 和各种加速器运行的通用可执行程序代码。

在当前的开发阶段,HPVM 提供的代码生成器能够将使用虚拟 ISA 定义的应用程序节点转换为使用 NVIDIA GPU(cuDNN 和 OpenCL)、Intel AVX 矢量指令和多核 x86 CPU 执行。 在运行时,HPVM 应用灵活的计算进程调度策略,这些策略基于程序信息(图形结构)并通过编译各个程序节点以在系统中可用的任何目标计算设备上执行来实现。

值得注意的是,使用HPVM可以实现生产率的显着提高。 HPVM 转换器的性能可与 GPU 和矢量计算设备的手写 OpenCL 代码相媲美。

与第一个预览版本相比,HPVM 1.0 支持线性代数张量运算、Pytorch 和 Keras 前端、卷积算子近似以及近似调整框架,该框架可自动为特定张量运算选择最佳近似并选择提供最佳性能的配置。

来源: opennet.ru

添加评论