HPVM,用于 CPU、GPU、FPGA 和硬件加速器的 LLVM 编译器

该项目最近 LLVM 宣布发布 新版本的编译器 高性能虚拟机 2.0 (异构并行虚拟机), 其目标是简化系统编程 并提供工具来为特定领域的 CPU、GPU、FPGA 和硬件加速器生成代码。

由于系统中存在使用不同模型来实现并行性(CPU 内核、向量指令、GPU 等)、不同指令集和不同内存层次结构的组件,因此对异构并行系统进行编程很复杂。 每个系统都使用自己的这些组​​件组合。

主要思想 HPVM 项目 就是在编译的时候使用并行可执行程序的统一表示, 可用于支持并行计算的各类硬件,包括GPU、向量指令、多核处理器、FPGA以及各种专用加速器芯片。

与其他系统不同, HPVM 试图结合三种可能性 组织异构计算:中间表示 (IR)、虚拟指令集架构 (V-ISA) 和运行时编程,无论编程语言和硬件如何。

HPVM 中间表示 通过使用分层数据流图扩展 LLVM 指令的中间表示 捕获任务、数据和计算管道级别的并行性。 HPVM 中间表示还包括向量指令和共享内存。 使用中间表示的主要目标是高效的代码生成和异构系统的优化。

虚拟指令集架构 (V-ISA) 抽象了低级硬件,并仅使用底层并发模型(数据流图)统一了各种形式的并行性和内存架构。

V-ISA 允许不同类型硬件之间的可移植性以进行并行计算,并使得在使用异构系统的不同元素时不会损失性能。 虚拟 ISA 还可用于交付可在 CPU、GPU、FPGA 和各种加速器上运行的通用程序可执行代码。

灵活的计算调度策略在运行时应用,并基于有关程序的信息(图形结构)和通过编译各个程序节点以在系统中任何可用的目标计算设备上执行来实现。

该项目开发的代码生成器能够翻译由虚拟 ISA 定义的应用程序节点,以在 NVIDIA GPU(cuDNN 和 OpenCL)、英特尔 AVX 矢量指令、FPGA 和 x86 多核 CPU 上运行。 值得注意的是,HPVM 翻译器的输出性能与 GPU 和矢量计算设备的手写 OpenCL 代码相当。

HPVM 2.0的主要新特性

对于部分 提出的新奇事物 在这个新版本中,以下内容脱颖而出:

  • 提出了Hetero-C++语言前端,简化了应用程序代码在C/C++语言中的并行化,以便在HPVM中编译。 Hetero-C++ 为映射到 HPVM 线程图的数据级并行性和分层任务定义了扩展。
  • 已添加 FPGA 后端以支持在英特尔 FPGA 上运行代码。 为了协调执行,使用了面向 OpenCL 的英特尔 FPGA SDK。
  • 添加了 DSE(设计空间探索)框架,其中包括编译器优化和瓶颈检测机制,可针对给定硬件平台自动调整应用程序。
  • 该框架包含适用于英特尔 FPGA 的开箱即用性能模型,允许您连接自己的处理器以优化任何支持 HPVM 的设备。
  • 可以在 HPVM 数据流图级别和 LLVM 级别应用优化。
  • 将 LLVM 组件更新到版本 13.0。
  • 代码已重新组织,以便更轻松地浏览代码库、库和实用程序。
  • 测试的基础设施得到了改进,为各种 HPVM 组件添加了新的测试。

最后, 如果您有兴趣了解有关 HPVM 的更多信息, 您可以在中查看详细信息 以下链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。