Core Concepts
Allo 提供了一种新的编程模型,通过解耦硬件定制和算法规范,以及支持可组合的内核和调度,来提高加速器设计的生产力和性能。
Abstract
本文介绍了 Allo,一种用于构建高性能可组合加速器架构的新型编程模型。Allo 的主要设计原则包括:
提供解耦的硬件定制原语,包括计算、内存、通信和数据类型的定制。这些原语可以逐步应用于原始程序,进行优化,并在每一步验证正确性。
支持参数化内核模板,使得内核可以被重复利用,并支持自动调优和自动调度。
提出可组合调度的概念,用户可以从底层开始构建加速器,逐步添加定制,并组合不同的内核。Allo 还引入了层次化的数据流图,确保在集成不同内核时接口的正确性,并进行整体的数据流优化。
Allo 的实现包括 Python 前端语言和 MLIR 中间表示。与现有的高级硬件语言相比,Allo 在单个内核优化和多内核设计组合方面都有显著优势。实验结果表明,Allo 在 PolyBench 基准测试和大型神经网络模型 (GPT2) 上都优于现有的高级合成工具和加速器设计语言。
Stats
对于 PolyBench 基准测试,Allo 生成的加速器在所有测试用例上都优于最新的高级合成工具和加速器设计语言。
对于 GPT2 模型,Allo 生成的加速器推理延迟比 NVIDIA A100 GPU 快 1.7 倍,能效高 5.4 倍。
Quotes
"Allo 提供了一种新的编程模型,通过解耦硬件定制和算法规范,以及支持可组合的内核和调度,来提高加速器设计的生产力和性能。"
"Allo 的实现包括 Python 前端语言和 MLIR 中间表示。与现有的高级硬件语言相比,Allo 在单个内核优化和多内核设计组合方面都有显著优势。"